1
resposta

printStackTrace

Bom dia pessoal! Me surgiu a seguinte duvida: Coloquei o bloco try/catch bem em cima da exceção para ver o que aparece no printStackTrace. Eu achei que fosse aparecer somente a linha onde ocorreu a exceção, porem apareceu todos os métodos. Não era para aparecer somente uma linha, já que tratei a exceção dentro do próprio método onde ela ocorreu?

printStackTrace:

java.lang.NullPointerException: Cannot invoke "Conta.deposita()" because "joao" is null
    at Fluxo.metodo2(Fluxo.java:29)
    at Fluxo.metodo1(Fluxo.java:15)
    at Fluxo.main(Fluxo.java:8)

O código:


public class Fluxo {

    public static void main(String[] args) {
        System.out.println("Inicio do metodo main");


        metodo1();

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

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

    }

    private static void metodo2() {

        System.out.println("Inicio do metodo2");
        for (int i = 1; i <= 5; i++) {
            System.out.println(i);

        }
        try {
            Conta joao = null;
            joao.deposita();

            // System.out.println(3 / 0);

        } catch (ArithmeticException | NullPointerException ex) {


            System.out.println(ex.getMessage());
            ex.printStackTrace();

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

O printStrackTrace ele não vai mostrar só a linha onde ocorreu a exceção mas também todos os métodos que foram percorridos do inicio do código ate a linha onde ocorreu exceção ou seja ele esta mostrando os métodos invocados desde o seu primeiro método que é o main ate o método que ocorreu o erro que é o metodo2.