Implementei o try-catch with resources para conexão com banco de dados e coloquei uma exceção logo no construtor da conexão, e no try-catch with resources não chamou o método close do objeto. Por que? Não deveria aparecer a linha "fechando conexão". Segue abaixo o código fonte:
// Chasse que implementa a conexão "fake"
public class ConexaoAutocloseable implements AutoCloseable{
public ConexaoAutocloseable() {
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");
}
}
// Classe MAIN:
public class TestaConexaoTryWithResources {
public static void main(String[] args) {
try (ConexaoAutocloseable con = new ConexaoAutocloseable()){
con.leDados();
} catch(IllegalStateException ex){
ex.printStackTrace();
}
}
}