1
resposta

ex.PrintStackTrace()

public class Fluxo {

    public static void main(String[] args) {
        System.out.println("Ini do main");
        try {
            metodo1();
        } catch(ArithmeticException ex) {
            //String msg = ex.getMessage();
            //System.out.println("ArithmeticException " + 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;
        }
        System.out.println("Fim do metodo2");
    }

}

Bom dia. Gostaria de saber o porque a ordem das mensagens no console ficam diferente, ao utilizar o ex.PrintStack(). O rastro da pilha é impressa antes mesmo do INI DO MAIN , do INI DO METODO1 e do INI DO METODO2.

----------------------------------------------------
java.lang.ArithmeticException: / by zero
    at Fluxo.metodo2(Fluxo.java:26)
    at Fluxo.metodo1(Fluxo.java:18)
    at Fluxo.main(Fluxo.java:7)
Ini do main
Ini do metodo1
Ini do metodo2
1
Fim do main
----------------------------------------------------
1 resposta

Tatiane, boa tarde!

Eu testei o código que você passou e ele mostrou

Ini do main
Ini do metodo1
Ini do metodo2
1
Fim do main
java.lang.ArithmeticException: / by zero
    at br.com.devcapu.mcdonalds.test.Fluxo.metodo2(Fluxo.java:26)
    at br.com.devcapu.mcdonalds.test.Fluxo.metodo1(Fluxo.java:18)
    at br.com.devcapu.mcdonalds.test.Fluxo.main(Fluxo.java:9)

Process finished with exit code 0

Ele executa a ordem que ele deveria executar e mostra a mensgem quando encontra um catch, não consegui reproduzir o erro.

Poderia mostrar um print do console ou nos enviar o link do seu projeto via github?

Aguardo sua resposta e bons estudos!