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

[Dúvida] Onde colocar o try-catch

Durante a aula o professor colocou o bloco try-catch no main e não no método 2 onde estava a exception. Onde devo colocar o try-catch, no método onde o código que dará a exception ou no main?

2 respostas

Olá, acredito que o melhor local seja exatamente onde o erro pode acontecer, claro que existem diversas opções porém neste exemplo da aula o erro poderia acontecer no método 2, se o tratamento é colocado no método 2 é possível ver que a execução não sofre alteração, os números do bloco " for " são apresentados, se colocado em qualquer outro dos métodos o método 2 inteiro não é executado após a linha com erro. Sendo assim vale avaliar o código, se a execução de todo um método não causa impacto na aplicação ele pode ser "pulado" caso contrário, acredito que seja sempre importante colocar onde exatamente o erro pode acontecer. A título de explicação é interessante ver o comportamento do tratamento em métodos diferentes exatamente para perceber como funciona a pilha de execução.

Este foi meu entendimento, espero ter ajudado.

solução!

Thiane você só vai usar o try catch onde você achar que pode dar algum erro após a execução do código exemplo

public class Conta {

public void deposita();

}

public class testaConta { public static void main(String[] args) {

Conta contaDoPedro = null;
contaDoPedro.deposita();    
}

}

No caso acima você pode ver que eu criei uma classe Conta que nela existe um metodo deposita. No metodo principal de teste o "main" eu criei uma referencia mais não criei uma conta e depois tentei acessar um metodo. Provavelmente como minha referência não aponta para lugar nenhum e eu estou atribuindo valores vai dar um erro. Sabendo desse erro eu posso usar o try catch como está abaixo para rodar o código e tratar essa exceção

public class testaConta {

    public static void main(String[] args) {
    try {

        Conta contaDoPedro = null;
        contaDoPedro.deposita();
    } catch(NullPointerException ex) {

        String mensagem = ex.getMessage();
        System.out.println("Exception: "+mensagem);
        System.out.println("Essa referencia Conta não aponta para lugar nenhum");
    }

    Dessa forma melhoramos o tratamento de um problema e podemos captura outras coisas fora mensagem e rastro de pilha.

    }

}