根据我的理解,以下代码不应编译,因为“我无法访问”语句在return.
但是,当我运行这段代码时,它编译得非常好。
同样来自 JLS: Unreachable Statements它不应该编译。
来自规范,在 14.21 Unreachable Statements:
如果以下两项都为真,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??!!!");
}
}
有人可以帮助我理解这种行为吗?
万千封印
守着一只汪
jeck猫
相关分类