4
respostas

Minha saída da classe Fluxo está diferente

A minha saída é: " Ini do main Ini do metodo1 Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unreachable code

at Fluxo.metodo2(Fluxo.java:29)
at Fluxo.metodo1(Fluxo.java:19)
at Fluxo.main(Fluxo.java:6)

"

e ainda está mostrando o erro

"Unable to find location of java.lang.Thread.setName() in debuggee JVM, for type java.lang.Thread "

    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");

            ArithmeticException ex = new ArithmeticException();

            throw ex;
            System.out.println("Fim do metodo2");
    }
}

Aguardo ajuda. Obrigada

4 respostas

A mensagem Unreachable code indica que existe um código que nunca será alcançado e por isso um erro de compilação é gerado.

No seu exemplo o metodo2 possuí um

System.out.println("Fim do metodo2");

após o

throw ex;

Ao lançar a exceção a execução do metodo2 se encerra e dessa forma a linha abaixo nunca é alcançada o que gera esse erro.

Remover o System.out.println do final resolve esse problema.

Prezado Vinicius,

Agradeço a atenção, mas a minha saída está diferente da do professor:

veja que deveria mostrar "Ini do metodo2" que está antes do throw, mas não mostra

Saída que está mostrando

Ini do main
Ini do metodo1

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Unreachable code

    at Fluxo.metodo2(Fluxo.java:29)
    at Fluxo.metodo1(Fluxo.java:19)
    at Fluxo.main(Fluxo.java:6)

insira seu código aqui `

Prezado Vinícius,

Pensei melhor e fiz o que você disse e deu certo.. obrigada.