java - मज़बूत पासवर्ड बनाएं




'आखिरकार ब्लॉक सामान्य रूप से ग्रहण चेतावनी को पूरा नहीं करता है (3)

ग्रहण मुझे निम्नलिखित कोड में चेतावनी देता है:

public int getTicket(int lotteryId, String player) {
    try {
        c = DriverManager.getConnection("jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database, this.user, this.password); 
        int ticketNumber;

        PreparedStatement p = c.prepareStatement(
                "SELECT max(num_ticket) " +
                "FROM loteria_tickets " +
                "WHERE id_loteria = ?"
                );
        p.setInt(1, lotteryId);
        ResultSet rs = p.executeQuery();
        if (rs.next()) {
            ticketNumber = rs.getInt(1);
        } else {
            ticketNumber = -1;
        }

        ticketNumber++;

        p = c.prepareStatement(
                "INSERT INTO loteria_tickets " +
                "VALUES (?,?,?,?)");
        p.setInt(1, lotteryId);
        p.setInt(2, ticketNumber);
        p.setString(3, player);
        p.setDate(4, new java.sql.Date((new java.util.Date()).getTime()));
        p.executeUpdate();

        return ticketNumber;
    } catch (Exception e) {
        e.printStackTrace();
    } finally { 
        if (c != null) {
            try {
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return -1;
    }
}

मेरे कोड में क्या गलत है?


आम तौर पर finally ब्लॉक में वापसी का वक्तव्य नहीं होना चाहिए क्योंकि यह अन्य return स्टेटमेंट्स या Exceptions को ओवरराइट करेगा।

आगे पढ़ने और इसके पृष्ठभूमि की अधिक विस्तृत उत्तरों के लिए कृपया प्रश्न देखें

पकड़ और अंत में वापसी बयान का व्यवहार


इससे वापसी विवरण हटा दें। अंतिम ब्लॉक को क्लीनअप ब्लॉक माना जाता है, आमतौर पर इसमें वापसी की उम्मीद नहीं होती है।


finally ब्लॉक में return और throw दोनों के साथ आपको चेतावनी मिलेगी, उदाहरण के लिए, आपको अंततः ब्लॉक के साथ एक ही चेतावनी मिल जाएगी:

...
}finally{
        throw new RuntimeException("from finally!");
}
...




try-catch-finally