Não sei se esse foi "o" caso de uso oficial, mas o seguinte produz um aviso em Java (que pode produzir ainda mais erros de compilação se misturado com return
instruções, levando a código inacessível):
while (1 == 2) { // Note that "if" is treated differently
System.out.println("Unreachable code");
}
No entanto, isso é legal:
while (isUserAGoat()) {
System.out.println("Unreachable but determined at runtime, not at compile time");
}
Por isso, muitas vezes me pego escrevendo um método de utilitário bobo para a maneira mais rápida de desvendar um bloco de código e, ao concluir a depuração, localizo todas as chamadas para ele, desde que a implementação não mude, isso pode ser usado para isso.
O JLS aponta if (false)
que não dispara "código inacessível" pelo motivo específico de que isso interromperia o suporte a sinalizadores de depuração, ou seja, basicamente esse caso de uso (h / t @auselen). ( static final boolean DEBUG = false;
por exemplo).
Substituí while
por if
, produzindo um caso de uso mais obscuro. Eu acredito que você pode tropeçar seu IDE, como Eclipse, com este comportamento, mas esta edição é de 4 anos no futuro, e eu não tenho um ambiente Eclipse para brincar.