重要信息:此问题仅与Java 6(及更低版本)有关。
层次结构here显示Java Exception分为两种类型:RuntimeException和[not a RuntimeException]:
java - 如何在Java 6中捕获所有检查的异常(在单个块中)?-LMLPHP
划分成UncheckedExceptionCheckedException这样的东西会更好吗?例如,以下语句具有很多已检查的异常:

try {
    transaction.commit();
} catch (SecurityException e) {
} catch (IllegalStateException e) {
} catch (RollbackException e) {
} catch (HeuristicMixedException e) {
} catch (HeuristicRollbackException e) {
} catch (SystemException e) {
}
我只是真正对它是成功还是失败感兴趣,因此只想将已检查的异常作为一个组来处理,而不要与未检查的异常作为一个整体来处理,因为这不是捕获意外错误的好习惯。因此,考虑到这一点,也许我可以做些类似的事情:
try {
    transaction.commit();
} catch (Exception e) {
    if (e instanceof RuntimeException) {
        // Throw unchecked exception
        throw e;
    }
    // Handle checked exception
    // ...
}
但这似乎是骇人听闻的。有没有更好的办法?

最佳答案

如果我理解正确,那么您就快到了。只需捕获RuntimeException。这将捕获RuntimeException及其层次结构中的所有内容。然后是Exception的失败,您将了解:

尝试 {
transaction.commit();
} catch(RuntimeException e){
//引发未经检查的异常
抛出e;
} catch(Exception e){
//处理检查的异常
//...
}

关于java - 如何在Java 6中捕获所有检查的异常(在单个块中)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14771239/

10-10 08:46