Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro de compilação - Try w/ resources

Ola! Estou com duvida em relação ao catched e uncatched. Eu rodei o codigo exatamente igual ao da aula com a classe conexao e a testa conexão porém o codigo nao compila, ele roda como se fosse do tipo uncatched e sugere a insernção do throws na assinatura do main. Se já estou usando o try qual o motivo desse erro?

Segue código das classe Conexão e TesteConexao abaixo.

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() throws Exception {
        System.out.println("Fechando conexao");
    }
}
public class TestaConexao {

    public static void main(String[] args) {// throws Exception 
        try (Conexao con = new Conexao()){
            con.leDados();
        }catch (IllegalStateException ex) {
            System.out.println("Deu erro na conexão");
        }

    }
}
2 respostas
solução!

Oi Ana, tudo bem?

O seu código está correto, apenas a sobrescrita do método close que tem em sua assinatura o throws Exception, como Exception é uma checked exception e não está sendo tratada, acontece o erro de compilação.

Para resolver, você pode remover da assinatura do método close o throws Exception.

@Override
public void close() {
    System.out.println("Fechando conexao");
}

Ahh sim, entendido!!

Muito obrigada!!