Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

AutoClose antes do Erro?

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.

1 resposta
solução!

Boa tarde, Gustavo! Como vai?

Sim, a conexão será fechada ao término do bloco try! Sendo que o bloco try é terminado na chaves que aparece exatamente antes do catch!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!