【发布时间】:2020-04-29 12:17:21
【问题描述】:
我正在准备 Java 考试,遇到了“unreachable statement”编译器错误,例如:
Source.java:10: error: unreachable statement
System.out.println("This code is not reachable");
我试图了解何时会或不会发生这种情况 - 例如。它不会在这些情况下发生:
// Case #1
if (true) {
System.out.println("This code is reachable");
} else {
System.out.println("This code is not reachable"); // Compiles OK
}
// Case #2
for (i = 0; i < 5; i++) {
if (true) continue;
System.out.println("This code is not reachable"); // Compiles OK
}
编译器似乎不够聪明,无法检测if 条件何时始终为true - 有人可以提供更详细的解释吗?
【问题讨论】:
-
分析似乎是complete but unsound,因此它可能会遗漏错误,但它确实给出的错误绝不是错误的。这是分析的设计选择。
标签: java if-statement compiler-errors conditional-statements unreachable-statement