1
resposta

Código não alcançável compila no for e não no if. Por quê?

Esse código não compila:

class A {
    public static void main(String[] args) {
        for(;false;) {
            System.out.println("a");
            break;
        }
        System.out.println("b");
    }
}

Já esse compila:

public class A{

    public static void main(String... args){
        if(false){
            System.out.println("");
        }
        System.out.println("fim");
    }
}

Ambos contém códigos que não serão nunca executados. Por que o primeiro não compila e o segundo compila normalmente?

1 resposta

Olá Erick..

No primeiro caso, a validação do código é realizada previamente pelo compilador, e o erro de compilação se dá pelo fato de que se a condição do for é que seja false, o código:

            System.out.println("a");
            break;

Nunca será executado. Sendo assim o compilador já te alerta e não permite que prossiga com essa inconsistência.

Já no IF, a checagem é realizada em runtime, então compila normalmente.

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