A partir do Java 7, você não precisa mais fechar explicitamente os recursos em um bloco finally , em vez de usar a sintaxe try -with-resources. A instrução try-with-resources é uma instrução try que declara um ou mais recursos. Um recurso é um objeto que deve ser fechado após o programa terminar com ele. A instrução try-with-resources garante que cada recurso seja fechado no final da instrução. Qualquer objeto que implemente java.lang.AutoCloseable, que inclui todos os objetos que implementam java.io.Closeable, pode ser usado como um recurso.
Suponha o seguinte código:
try( Connection con = null;
Statement stmt = con.createStatement();
Result rs= stmt.executeQuery(QUERY);)
{
count = rs.getInt(1);
}
Se ocorrer alguma exceção, o método close será chamado em cada um desses três recursos na ordem oposta em que foram criados. Isso significa que o método close seria chamado primeiro para ResultSetm, depois para a instrução e no final para o objeto Connection.
Também é importante saber que todas as exceções que ocorrem quando os métodos de fechamento são chamados automaticamente são suprimidas. Essas exceções suprimidas podem ser recuperadas pelo método getsuppressed () definido na classe Throwable .
Fonte: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html