无法访问的代码编译没有错误 - 如何?
根据我的理解,下面的代码不应该编译,因为语句“我无法访问”在.return
但是,当我运行此代码时,它的编译绝对正确。
同样从JLS:无法访问的语句中,它不应该编译。
来自规范,在 14.21 无法访问语句:
如果同时满足以下两项条件,则 try 语句可以正常完成:
try 块可以正常完成,或者任何捕获块可以正常完成。
如果 try 语句有一个 finally 块,则 finally 块可以正常完成。
在这里,try块不能正常完成,但捕获块可以和最终块一样完成,所以我在这里感到困惑
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??!!!");
}
}
有人可以帮助我理解这种行为吗?