Czy to oznacza, że kompilator sprawdza, czy jest w stanie skompilować wszystkie gałęzie/linie kodu?
Oznacza to, że kompilator sprawdza, czy wszystkie wyciągi są osiągalne.
Od section 14.21 of the JLS:
Jest to błąd kompilacji, jeśli oświadczenie nie może być wykonany, ponieważ jest nieosiągalny.
Ta sekcja poświęcona jest dokładnemu wyjaśnieniu słowa "osiągalne". Chodzi o to, że musi istnieć jakaś ścieżka wykonywania od początku konstruktora, metody, inicjalizatora instancji lub inicjalizatora statycznego, który zawiera instrukcję do samej instrukcji. Analiza uwzględnia strukturę oświadczeń.
Sekcja następnie dokumentuje, w jaki sposób definiuje się osiągalność.
W szczególności, odpowiednie punkty w twoim przypadku to:
Każdy inny rachunek S w niepustym bloku, który nie jest blok przełącznik jest osiągalny IFF oświadczenie poprzedzające S może zakończyć się normalnie.
A, continue
, return
lub oświadczenie nie może zakończyć się normalnie.
Więc „Linia 1” oświadczenie jest poprzedzona oświadczeniem (break;
), które nie mogąkompletny normalnie, a zatem jest to nieosiągalne.
Spójrz: http://stackoverflow.com/questions/3795585/why-does-java-have-an- nieosiągalny komunikat-kompilator-błąd – BobTheBuilder