Esse recurso foi introduzido no Java 7 para fechar automaticamente recursos como arquivos, conexões e streams, evitando vazamentos e simplificando o código.
🧠 Conceito
O bloco try-with-resources garante que qualquer objeto que implemente a interface AutoCloseable será fechado automaticamente ao final do try, mesmo que uma exceção ocorra.
✅ Sintaxe Básica
try (FileInputStream fis = new FileInputStream("arquivo.txt")) {
int dado = fis.read();
System.out.println(dado);
} catch (IOException e) {
e.printStackTrace();
}
🟢 O FileInputStream implementa AutoCloseable, então é fechado automaticamente.
✅ Vários recursos
Você pode abrir múltiplos recursos:
try (
FileReader fr = new FileReader("entrada.txt");
BufferedReader br = new BufferedReader(fr)
) {
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
⚠️ Regras importantes:
- Todos os recursos declarados entre parênteses devem implementar
AutoCloseable(ouCloseable). - Você não pode reutilizar variáveis declaradas fora do
try(pré-Java 9). - O fechamento ocorre na ordem inversa da declaração.
✅ Interface AutoCloseable
Você pode criar seus próprios recursos que serão automaticamente fechados:
class MeuRecurso implements AutoCloseable {
public void usar() {
System.out.println("Usando recurso");
}
@Override
public void close() {
System.out.println("Fechando recurso");
}
}
Uso:
try (MeuRecurso r = new MeuRecurso()) {
r.usar();
}
🖨️ Saída:
Usando recurso
Fechando recurso
🧪 Quiz
1. O que try-with-resources garante automaticamente?
A) Execução do finally
B) Captura de todas as exceções
C) Fechamento de recursos que implementam AutoCloseable
D) Prevenção de exceções de runtime
2. Qual dessas interfaces é obrigatória para o uso no try-with-resources?
A) Closeable
B) Serializable
C) AutoCloseable
D) Comparable
3. O que acontece se uma exceção for lançada dentro do try?
A) O recurso ainda será fechado
B) O programa trava
C) O recurso não é fechado
D) Precisa de finally para fechar
4. Qual a ordem de fechamento dos recursos?
A) Na ordem de declaração
B) Aleatória
C) Inversa à declaração
D) Só o último é fechado
✅ Gabarito Comentado
- C – Esse é o principal objetivo do recurso.
- C – O
AutoCloseableé a interface obrigatória. - A – Sempre será fechado automaticamente.
- C – Recursos são fechados na ordem inversa da abertura.