Ich war vor kurzem einen Code-Block aus unserer Code-Basis vor einem Release zu entfernen und verwendet, um eine if (false) die Ausführung der Anweisung zu verhindern:Während (false) verursacht nicht erreichbar Anweisungskompilierung Fehler
if (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
Dies kompiliert fein und verhindert die Ausführung des fehlerhaften Codeblocks (richtig oder falsch, das ist nicht das aktuelle Argument).
jedoch Art von Unfall, änderte ich den Block oben:
while (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
und erhielt einen unerreichbaren Anweisungskompilierung Fehler.
Ich schätze den Kompilierungsfehler und verstehe die Gründe, aber ich kämpfe, um den Unterschied zwischen den zwei Blöcken zu verstehen und warum ersteres kompiliert, aber das letztere nicht, wenn sie beide unerreichbare Aussagen haben.
Meine Vermutung ist, dass es einen Fehler viel einfacher zu machen Beteiligung 'do-while' als mit' if'. Deshalb sollte der letztere Fall zu einem Fehler führen. – Renan
Meine Vermutung ist, dass die ursprüngliche Absicht des Compilerautors war, beide einen nicht erreichbaren Fehler verursachen zu lassen. Da Programmierpraktiken Leute jedoch haben, die Code mit if (false) normalerweise deaktivieren, erlaubte es das als Spezialfall. – CBass