Ich habe ein Problem mit Try-mit-Ressourcen und ich frage nur um sicher zu sein. Kann ich es verwenden, wenn ich auf eine Ausnahme reagieren muss, und ich brauche immer noch die Ressource im Catch-Block? Beispiel angegeben:Transaktion Rollback auf SQLException mit neuen Try-mit-Ressourcen Block
try (java.sql.Connection con = createConnection())
{
con.setAutoCommit(false);
Statement stm = con.createStatement();
stm.execute(someQuery); // causes SQLException
}
catch(SQLException ex)
{
con.rollback();
// do other stuff
}
Ich fürchte, dass ich immer noch die alten try-catch-finally in diesem Fall, auch nach dem Oracle-Dokumentation zu verwenden, ist zum Scheitern verurteilt - „fangen und schließlich Blöcke in einer Try-mit-Ressourcen Anweisung wird jeder catch- oder finally-Block ausgeführt, nachdem die deklarierten Ressourcen geschlossen wurden. "
In diesem Fall, wenn die Verbindung selbst fehlgeschlagen ist, hat es keinen Sinn, es zurückzurollen. Der Umfang von "con" ist beschränkt auf try block only. – learningloop
Diese Frage kann auch helfen. http://stackoverflow.com/questions/9260159/java-7-automatic-resource-management-jdbc –
Von allen interessanten Optionen gegeben, bevorzuge ich immer noch das Original "Try-Catch-finally" – Adam