我知道如果java发现一行代码,它确保控件永远不会到达,然后编译器报告无法访问的代码错误。
请考虑以下代码。无法访问的代码try-catch-finally
static int method1() {
try{ return 1; }
catch(Exception e){ } // LINE-1
finally{ }
System.out.println("abc"); //LINE-2
return 2;
}
}
在上面的代码
try块通过返回1,但仍然行之后最后块(LINE-2起)的网络层可达保证退出。
。如果我评论catch块(LINE-1),LINE-2变得无法访问。
为什么会这样。情况1中编译器无法在try块中看到无条件返回。
例外情况不保证发生。它可能发生(在这里你知道它不会发生),所以它没有任何错误。 – Kishore