1
resposta

Dúvida sobre ordem de excecução

Se eu não deixar comentado o código System.out.println("Fim do metodo2"); terei a exceção Unreachable code, porém antes de chegar nessa exceção deveria ser executado o código System.out.println("Ini do metodo2");, mas ao invés de executar essa linha o compilador descarta o método inteiro. Alguém sabe explicar o motivo?

1 resposta

Olá, Leandro!

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

Isso acontece porque não existe um caminho de fluxo de controle para o código do restante do método. O mesmo erro acontece caso você coloque alguma instrução após a linha do 'return' em algum método que possui um retorno, por exemplo, int. Entenda: O método termina no lançamento dessa exceção. Não executar nem mesmo a primeira linha deste método indica que há um erro de compilação. Caso você coloque alguma condicional para lançar a exceção, aí sim a primeira linha e , talvez, a última seria executada. Pois a exception, a depender da condicional que pode ser com um 'if', pode não ser lançada. Teste fazer algo como:

private static void metodo2() {
        System.out.println("Ini do metodo2");
        int a = 1;
        int b = 2;
        if (a > b) {
            throw new ArithmeticException("deu errado");
        }
        System.out.println("Fim do metodo2");
    }

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software