我想以不同的方式处理两种不同类型的异常,然后对两种异常类型进行一些相同的操作。如何在Java中做到这一点?

以下代码显示了我要执行的操作,但它不正确,因为一个异常不能被捕获两次。

正确的语法是什么?

try {
    // do something...
}
catch (ExceptionA e) {
    // actions for ExceptionA
}
catch (ExceptionB e) {
    // actions for ExceptionB
}
catch (ExceptionA | ExceptionB e) {
    // actions for ExceptionA & ExceptionB
}

最佳答案

使用catch (ExceptionA | ExceptionB e)构造。在catch块中,首先对instanceof进行e检查,然后分别处理异常类型。之后,对这两种类型进行通用处理。这样,您可以在一个catch块中完成所有操作:

try {
    // do something...
} catch (ExceptionA | ExceptionB e) {
    if (e instanceof ExceptionA) {
        // handling for ExceptionA
    } else {
        // handling for ExceptionB
    }
    // common handling for both exception types
}

关于java - 捕获多个异常时的特定且相同的操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31878763/

10-09 08:25