首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当抛出RuntimeException时,Java需要返回值

当抛出RuntimeException时,Java需要返回值
EN

Stack Overflow用户
提问于 2018-08-28 01:35:20
回答 7查看 1.4K关注 0票数 4

为什么这不能编译(用java8和java10尝试过)?它会产生一个缺少返回语句的错误。

代码语言:javascript
复制
 public class CompilerIssue {
   public boolean run() {
     throwIAE();
     // Missing return statement
   }

   public void throwIAE() {
     throw new IllegalStateException("error");
   }
 }
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-08-28 01:39:42

java编译器不知道throwIAE总是会抛出异常,所以它假定您最终会到达run方法的末尾,当这种情况发生时,需要一个返回值。

票数 17
EN

Stack Overflow用户

发布于 2018-08-28 01:37:53

你的方法有一个返回类型,所以它应该返回一个布尔结果。

代码语言:javascript
复制
   public boolean run() {
     throwIAE();
     // Missing return statement
     return false;
   }

或者你应该直接在方法中抛出你的异常:

代码语言:javascript
复制
   public boolean run() {
     throw new IllegalStateException("error"); // it will compile
   }
票数 7
EN

Stack Overflow用户

发布于 2018-08-28 01:57:14

即使现在的编译器很聪明,他们也不能“看到”你的throwIAE()方法总是返回异常,因为这会在运行时发生,而不是在编译时。如果你处理这个异常呢?那么你最终必须添加一个返回值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52044362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档