Java 使用多个catch语句运行()

Java 使用多个catch语句运行(),java,exception,Java,Exception,我有一个run()调用,如下所示。只要我在SQLException one下面添加另一个catch块,我就会看到错误声明此方法必须返回布尔类型的结果 我试图捕获的异常类型是否存在导致此问题的问题,因为我返回的是布尔值。该部分没有代码更改。 关键是,在第二个catch块中,我只记录而不重新引用任何内容 .run( () -> { try () { /* a lot other code */

我有一个run()调用,如下所示。只要我在SQLException one下面添加另一个catch块,我就会看到错误声明
此方法必须返回布尔类型的结果
我试图捕获的异常类型是否存在导致此问题的问题,因为我返回的是布尔值。该部分没有代码更改。
关键是,在第二个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块中提到应该返回的内容,那么该方法是如何工作的。该方法要么需要返回一个值,要么异常结束。那么,在你的第二个捕获块中会发生什么呢(你应该把它包括在你的问题中!)。如果你没有抛出另一个异常,那么你需要返回一个值。明白了,我只记录了一个异常,因此出现了错误。谢谢。