Java 使用多个catch语句运行()
我有一个run()调用,如下所示。只要我在SQLException one下面添加另一个catch块,我就会看到错误声明Java 使用多个catch语句运行(),java,exception,Java,Exception,我有一个run()调用,如下所示。只要我在SQLException one下面添加另一个catch块,我就会看到错误声明此方法必须返回布尔类型的结果 我试图捕获的异常类型是否存在导致此问题的问题,因为我返回的是布尔值。该部分没有代码更改。 关键是,在第二个catch块中,我只记录而不重新引用任何内容 .run( () -> { try () { /* a lot other code */
此方法必须返回布尔类型的结果
我试图捕获的异常类型是否存在导致此问题的问题,因为我返回的是布尔值。该部分没有代码更改。
关键是,在第二个catch块中,我只记录而不重新引用任何内容
.run(
() -> {
try () {
/* a lot other code */
return booleanValue;
}
catch (SQLException e) {
// throws another exception
}
}
);
首先,我们不知道你的“跑步”签名。所以这个问题缺少很多细节。它看起来像是你有
interface Something{
boolean doStuff();
}
那你就有办法了
void run( Something s ){ ...}
因此,您可以使用必须实现Something
接口的lambda调用run
public boolean doStuff(){
try{
boolean result = exceptionalStuf();
return result;
} catch( SqlException e){
//doesn't need to return, it terminates exceptionally.
throw new RuntimeException(e);
} catch(Exception e2){
//needs to return or re-throw.
return false;
}
}
您必须指定捕获异常时要返回的内容。顺便说一下,返回布尔值代码>无法引发SQLException。在现有的SQLException捕获块中,我看到我们没有明确指定任何内容。我们只抛出一个新的异常。如果我需要在新的catch块中提到应该返回的内容,那么该方法是如何工作的。该方法要么需要返回一个值,要么异常结束。那么,在你的第二个捕获块中会发生什么呢(你应该把它包括在你的问题中!)。如果你没有抛出另一个异常,那么你需要返回一个值。明白了,我只记录了一个异常,因此出现了错误。谢谢。