Il blocco finally non può sempre essere eseguito, prendere in considerazione il seguente codice.
public class Tester {
public static void main(String[] args) {
try {
System.out.println("The main method has run");
System.exit(1);
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("The finally block has run");
}
}
}
Nel tuo caso, vorrei suggerire per avvolgere il codice all'interno blocco finally in try/catch, come il codice a quanto pare potrebbe generare un'eccezione.
} catch (SQLException sqle) {
sqle.printStackTrace();
} finally {
try {
cs.close();
rs.close();
} catch (Exception e) {
//handle new exception here
}
Nota che hai ancora un problema in quanto se il tuo primo 'close' genera un'eccezione, non arrivi mai al secondo. A quanto pare, è generalmente una buona idea non usare botch 'catch' e' finally' con lo stesso blocco 'try'. –
Non più necessario con java7: AutomaticResourceManagement, provare (new resourceDeclartion()) {} –