Tôi gặp sự cố với các tài nguyên thử và tôi chỉ yêu cầu chắc chắn. Tôi có thể sử dụng nó, nếu tôi cần phản ứng ngoại lệ, và tôi vẫn cần tài nguyên trong khối catch? Ví dụ đưa ra là thế này:Khôi phục giao dịch trên SQLException bằng cách sử dụng khối try-with-resources mới
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
}
Tôi sợ rằng tôi vẫn cam chịu để sử dụng cũ try-catch-cuối cùng trong trường hợp này, thậm chí theo tài liệu oracle - "catch khối và cuối cùng trong một thử-với-nguồn lực tuyên bố, bất kỳ bắt hoặc cuối cùng khối được chạy sau khi các nguồn lực khai báo đã được đóng lại. "
Trong trường hợp này nếu bản thân kết nối không thành công, không có điểm nào được đưa trở lại. Phạm vi 'con' được giới hạn chỉ để thử chặn. – learningloop
Câu hỏi này cũng có thể hữu ích. http://stackoverflow.com/questions/9260159/java-7-automatic-resource-management-jdbc –
Trong số tất cả các tùy chọn thú vị nhất định, tôi vẫn thích giải pháp tốt nhất "try-catch-finally" – Adam