Olá.
No curso de Java 4 - Excessões, foi mostrado as seguintes classes:
Classe Conexão:
public class Conexao implements AutoCloseable{
public Conexao() {
System.out.println("Abrindo conexao");
}
public void leDados() {
System.out.println("Recebendo dados");
throw new IllegalStateException();
}
@Override
public void close() {
System.out.println("Fechando conexao");
}
}
Classe TestaConexao:
public class TesteConexao {
public static void main(String[] args) {
try (Conexao conexao = new Conexao()) {
conexao.leDados();
} catch (IllegalStateException ex) {
System.out.println("erro");
}
}
}
Porém, no console é exibido:
Abrindo conexao
Recebendo dados
Fechando conexao
erro
O autoCloseable acontece no fechamento do try
?
Tentei colocar um finally depois do try, mas deu erro.
Então gostaria de saber por que a conexão é fechada antes de capturar o erro.
Obrigado.