1
resposta

[Dúvida] Tratamento de Exceções

Gostaria de saber o que fiz de errado para sair essa mensagem: java.lang.NullPointerException: Cannot invoke "Conta.deposita()" because "c" is null Com os outros códigos, imprime tudo certo Ini do main Ini do metodo1 Ini do metodo2 1 ExceptionCannot invoke "Conta.deposita()" because "c" is null java.lang.NullPointerException: Cannot invoke "Conta.deposita()" because "c" is null at Fluxo.metodo2(Fluxo.java:29) at Fluxo.metodo1(Fluxo.java:19) at Fluxo.main(Fluxo.java:7) Fim do main

public class Conta {

void deposita() {}

}

public class Fluxo {

    public static void main(String[] args) {
        System.out.println("Ini do main");
        try {
            metodo1();
        } catch(ArithmeticException | NullPointerException ex) {  
            String msg = ex.getMessage(); 
            System.out.println("Exception" + msg); 
            ex.printStackTrace(); 
        } 

        System.out.println("Fim do main");
    }

    private static void metodo1() {
        System.out.println("Ini do metodo1");
        metodo2();
        System.out.println("Fim do metodo1");
    }

    private static void metodo2() {
        System.out.println("Ini do metodo2");
        for(int i = 1; i <= 5; i++) {
            System.out.println(i);
                //int a = i / 0;
            Conta c = null;
            c.deposita(); 

        }
        System.out.println("Fim do metodo2");
    }
}
1 resposta

Oi Patrícia! Tudo bem?

Na verdade, esse é o comportamento esperado no exercício mesmo!

Como você declarou uma conta como null, não é possível acessar o método deposita() com ela: estamos tentando acessar um espaço na memória, ou um Pointer, que não existe. Por isso, o programa nos retorna uma NullPointerException. Podemos até ver isso na descrição do erro: Cannot invoke "Conta.deposita()" because "c" is null java.lang.NullPointerException: Cannot invoke "Conta.deposita()" because "c" is null. No caso, o tratamento da sua exceção foi mostrar qual a exceção e a mensagem dela.

Espero ter ajudado, abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!