为什么这不能编译(用java8和java10尝试过)?它会产生一个缺少返回语句的错误。
public class CompilerIssue {
public boolean run() {
throwIAE();
// Missing return statement
}
public void throwIAE() {
throw new IllegalStateException("error");
}
}
发布于 2018-08-28 01:39:42
java编译器不知道throwIAE
总是会抛出异常,所以它假定您最终会到达run
方法的末尾,当这种情况发生时,需要一个返回值。
发布于 2018-08-28 01:37:53
你的方法有一个返回类型,所以它应该返回一个布尔结果。
public boolean run() {
throwIAE();
// Missing return statement
return false;
}
或者你应该直接在方法中抛出你的异常:
public boolean run() {
throw new IllegalStateException("error"); // it will compile
}
发布于 2018-08-28 01:57:14
即使现在的编译器很聪明,他们也不能“看到”你的throwIAE()
方法总是返回异常,因为这会在运行时发生,而不是在编译时。如果你处理这个异常呢?那么你最终必须添加一个返回值。
https://stackoverflow.com/questions/52044362
复制相似问题