java - 抛出 RuntimeException 时,Java 期望返回值
问题描述
为什么这不能编译(用 java 8 和 java 10 试过)?它会产生缺少返回语句的错误。
public class CompilerIssue {
public boolean run() {
throwIAE();
// Missing return statement
}
public void throwIAE() {
throw new IllegalStateException("error");
}
}
解决方案
java 编译器不知道
throwIAE
总是会抛出异常,因此它假定您最终会到达
run
方法的末尾,并且当这种情况发生时,需要返回值。