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

Conexao fechada?

No exemplo do video, com o try with resources, quando rodamos o codigo, aparentemente o método close() nao roda. Neste caso, a conexao estaria aberta ainda?

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

classe TesteConexao:

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Opa Neila, boa tarde! Nesse caso, a execução do código foi interrompida por conta da IllegalStateException que é lançada pelo próprio construtor da classe Conexao. Mesmo que a mensagem de que a conexão foi aberta tenha sido enviada, o objeto conexao não foi instanciado devidamente, porque o construtor lançou uma exceção. Quer dizer que a conexão não foi fechada porque ela não foi aberta, por isso o try-with-resources não funcionou no seu caso. Se você remover o "throw new IllegalStateException();" do construtor da classe Conexao tudo deve funcionar como esperado. Espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software