Vous pouvez le faire :
try (Connection conn = new Connection()) {
ResultSet rs = conn.execute()
// do stuff with rs
} catch (SQLException e) {
// handle exception
}
Les exceptions déclenchées par conn.execute() sont capturées par le bloc catch. Les exceptions déclenchées par new Connection() seront supprimées :
Une exception peut être levée à partir du blo try-with-resources. Dans l'exemple writeToFileZipFileContents, une exception peut être levée dans le bloc try et jusqu'à deux exceptions peuvent être levées à partir du bloc try-with-resources lorsqu'elle tente de fermer les objets ZipFile et BufferedWriter. Si une exception est levée dans le bloc try et qu'une ou plusieurs exceptions sont levées à partir de l'instruction try-with-resources alors ces exceptions lancées par l'instruction try-with-resources sont supprimées, et l'exception levée par le bloc est la celle qui est levée par la méthode writeToFileZipFileContents. Vous pouvez récupérer ces exceptions supprimées en appelant la méthode Throwable.getSuppressed à partir de l'exception lancée par le bloc try .
Ver: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
EDIT : Comme Timothy l'a souligné, Connection ne garantit pas la fermeture d'un ResultSet qu'il a créé. Nous avons donc besoin de quelque chose comme ceci :
try (Connection conn = new Connection();
Statement statement = connection.createStatement()) {
// statement.set(....)
try (ResultSet rs = conn.execute()) {
// do stuff with rs
}
} catch (SQLException e) {
// handle exceptions
}