public class Conexao implements AutoCloseable {
public Conexao() {
System.out.println("Abrindo conexao");
throw new IllegalStateException();
}
public void leDados() {
System.out.println("Recebendo dados");
// throw new IllegalStateException();
}
@Override
public void close() {
System.out.println("Fechando conexao");
}
}
Quando executo com o try with resources, o meted close() nah eh chamado!! Gostaria de saber porque e se isso eh tratado usualmente na classe de conexão.
public class TestaConexao {
public static void main(String[] args) {
try (Conexao conexao = new Conexao()) {
conexao.leDados();
} catch (IllegalStateException ex) {
System.out.println("Deu algum pau na conexao!!");
}
}
}