为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个方法调用抛出异常的方法时,如何避免出现“缺少返回语句”?

从另一个方法调用抛出异常的方法时,如何避免出现“缺少返回语句”?

梦里花落0921 2022-12-21 10:07:04
我有一个方法可以处理不同的错误代码并始终抛出未经检查的异常。这个方法在全班很多地方都用到了。当我尝试在另一个没有 void 返回类型的方法中调用它时,如下所示:public Object someMethod() {   ....   if(success){     return result;   } else {      callMethodThatAlwaysThrowsUncheckedExceptions();   }}java 编译器说该方法是missing return statement.如何解决这个问题,我想到了两个选择:用其内容替换方法调用在返回空对象的方法调用之后添加一个返回语句但是我真的不喜欢这些选项中的任何一个:第一个是因为代码重复,第二个是因为需要编写永远不会执行的代码。还有其他方法可以解决这个问题吗?
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

只需交换条款,如果方法抛出,您将永远无法返回。


 if(!success){

   callMethodThatAlwaysThrowsUncheckedExceptions();

 } 


 return result;

甚至


 callMethodThatAlwaysThrowsUncheckedExceptions(succes);

 return result;

只需检查您的投掷方法中的成功条件。


查看完整回答
反对 回复 2022-12-21
?
慕沐林林

TA贡献2016条经验 获得超9个赞

除了Slawomir Chodnicki 已经提供的出色答案之外,还有另一个建议。

callMethodThatAlwaysThrowsUncheckedExceptions()将你的which somewhere throws an更改Exception为工厂方法。例如:改变这个:

// somewhere in callMethodThatAlwaysThrowsUncheckedExceptions
throw new MyException();

到:

return new MyException();

这样你就可以像这样调用那个方法:

throw callMethodThatAlwaysThrowsUncheckedExceptions();

因此将帮助编译器看到这是该执行分支的最后一条语句。

这也适用于不同的例外情况,return而不是throw


查看完整回答
反对 回复 2022-12-21
  • 2 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信