【发布时间】:2016-11-24 12:52:17
【问题描述】:
第 2 行的语句永远不会执行,但编译器不会报错:
class Test {
public static void main(String[] args) throws Exception {
throwE();
// throw new Exception(); // Line 1
doStuff(); // Line 2
}
static void throwE() throws Exception {
System.out.println("Throwing an Exception");
throw new Exception();
// doStuff(); // Line 3
}
static void doStuff(){ System.out.println("Doing stuff"); }
}
另一方面,取消注释第 1 行或第 3 行会导致“无法访问语句”编译时错误。
不知道为什么编译器这么不一致...
【问题讨论】:
-
在第一种情况下,编译器只知道有一个方法会抛出
Exception,但不能保证这个方法能做到。第二种情况,无论如何都会抛出异常。 -
@Andrew Tobilko 非常有道理。谢谢你:)
标签: java exception unreachable-statement