我知道如果java找到了保证控制永远不会到达的代码行,那么编译器会报告无法访问的代码错误。
考虑以下代码。
static int method1() {
try{ return 1; }
catch(Exception e){ } // LINE-1
finally{ }
System.out.println("abc"); //LINE-2
return 2;
}
}
在上面的代码中,
1 try 块通过返回 1 来保证退出,但在 finally 块(LINE-2 之后)之后仍然可以访问。
2 . 如果我评论 catch 块 (LINE-1),则 LINE-2 变得无法访问。
为什么会这样。编译器不能在 case-1 的 try 块中看到无条件返回。