Из моего понимания следующий код, который я написал, не должен компилироваться, поскольку утверждение "Я недостижимо" после return
.
Однако он компилируется абсолютно точно.
Также из JLS: Unreachable Statement нельзя компилировать его.
из спецификации, в 14.21 Недостижимые утверждения:
Оператор try может завершиться нормально, если выполняются оба следующих условия:
Блок try может завершиться нормально или любой блок catch может завершиться нормально.
Если оператор try имеет блок finally, тогда блок finally может завершиться нормально.
Здесь блок try не может закончить нормально, но блок catch может так же, как и блок finally, поэтому я запутался здесь
public class Test1 {
public static void main(String[] args) {
try {
return;
} catch (Exception e) {
System.out.println("catch");
} finally {
System.out.println("finally");
}
System.out.println("I am unreachable??!!!");
}
}
Может ли кто-нибудь помочь мне понять это поведение?