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

我有一个方法可以处理不同的错误代码并始终抛出未经检查的异常。这个方法在全班很多地方都用到了。当我尝试在另一个没有 void 返回类型的方法中调用它时,如下所示:


public Object someMethod() {

   ....

   if(success){

     return result;

   } else {

      callMethodThatAlwaysThrowsUncheckedExceptions();

   }

}

java 编译器说该方法是missing return statement.


如何解决这个问题,我想到了两个选择:


用其内容替换方法调用

在返回空对象的方法调用之后添加一个返回语句

但是我真的不喜欢这些选项中的任何一个:第一个是因为代码重复,第二个是因为需要编写永远不会执行的代码。


还有其他方法可以解决这个问题吗?


梦里花落0921
浏览 75回答 2
2回答

慕田峪9158850

只需交换条款,如果方法抛出,您将永远无法返回。 if(!success){   callMethodThatAlwaysThrowsUncheckedExceptions(); }  return result;甚至 callMethodThatAlwaysThrowsUncheckedExceptions(succes); return result;只需检查您的投掷方法中的成功条件。

慕沐林林

除了Slawomir Chodnicki 已经提供的出色答案之外,还有另一个建议。callMethodThatAlwaysThrowsUncheckedExceptions()将你的which somewhere throws an更改Exception为工厂方法。例如:改变这个:// somewhere in callMethodThatAlwaysThrowsUncheckedExceptions throw new MyException();到:return new MyException();这样你就可以像这样调用那个方法:throw callMethodThatAlwaysThrowsUncheckedExceptions();因此将帮助编译器看到这是该执行分支的最后一条语句。这也适用于不同的例外情况,return而不是throw
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java