✅ Use Autoclose Resources with a try-with-resources Statement

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:

  1. Todos os recursos declarados entre parênteses devem implementar AutoCloseable (ou Closeable).
  2. Você não pode reutilizar variáveis declaradas fora do try (pré-Java 9).
  3. 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

  1. C – Esse é o principal objetivo do recurso.
  2. C – O AutoCloseable é a interface obrigatória.
  3. A – Sempre será fechado automaticamente.
  4. C – Recursos são fechados na ordem inversa da abertura.

Deixe um comentário