3
respostas

Mensagem do método close no fim do programa

Gostaria de saber se há maneira de informar a mensagem que consta no "finally"(close - ("Fechando conexão")) na última linha de saida do programa ?

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 conexão");    
}

}

public class TesteConexao {

public static void main(String[] args) {

    try (Conexao conexao = new Conexao()){
        conexao.leDados();    
    } catch(IllegalStateException ex) {
    System.out.println("Deu erro na conexao");
    }
}

}

3 respostas

Quero aprenderrr fazer isso

Oi Érika, fazer o que? rs

Olá,

para garantir que a conexão feche utilizando o try da forma convencional, sem recursos, vc tem que utilizar o finally. Nesse caso, vc pode informar suas mensagens no bloco finally. Caso não ocorrer outra exceção ali, tudo que for informado será executado. Exemplo:

} finally  {
    ConnectionFactory.closeConnection(con);
    System.out.println("Mensagem final");
}

já utilizando o try with resources, vc tem que implementar o método close(). Nesse caso, tudo que for informado no método close() da classe que implementar o AutoCloseable será executado, caso não ocorra outra exceção ali.

Por fim, só um detalhe, no seu exemplo:

    System.out.println("Recebendo dados");
        throw new IllegalStateException();

vc poderia informar uma mensagem na instanciação da classe, throw new IllegalStateException("Deu erro na conexao"). Assim, seria possível recuperar a mensagem na captura da exceção no bloco try.


catch(IllegalStateException ex) {
    System.out.println(ex.getMessage());
    }

e a saída seria a mesma: Deu erro na conexao.

Nesse exemplo que fiz, criei várias versões de tratamento de exceção. Para testar, é só ir alterando a versão no método main.