Sobes.tech
Junior — Middle

Os outros recursos serão fechados automaticamente se ocorrer uma exceção ao fechar um dos componentes no bloco try-with-resources?

sobes.tech IA

Resposta da IA

Na construção try-with-resources em Java, todos os recursos declarados entre parênteses são fechados automaticamente na ordem inversa à sua declaração, mesmo que uma exceção ocorra ao fechá-los.

Se ocorrer uma exceção ao fechar um recurso, a JVM continuará tentando fechar os outros recursos. As exceções que ocorrerem ao fechar recursos após a primeira serão adicionadas como exceções suprimidas à primeira exceção.

Exemplo:

try (Resource res1 = new Resource("res1");
     Resource res2 = new Resource("res2")) {
    // trabalho com recursos
}
// Ao sair do bloco, ambos os recursos serão fechados,
// mesmo que uma exceção ocorra ao fechar res1,
// res2 também será fechado.

Isso garante a liberação confiável de todos os recursos, prevenindo vazamentos.