如何在Java中捕获所有已检查的异常(在单个块中)?

前端之家收集整理的这篇文章主要介绍了如何在Java中捕获所有已检查的异常(在单个块中)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑:这个问题只涉及 Java 1.6(及以下).抱歉没有在原帖中说清楚.

层次结构here显示Java异常分为两种类型:RuntimeException而不是RuntimeException:

我可能错过了一些东西,但是分成UncheckedException和CheckedException之类的东西不是更好吗?例如,以下语句具有相当多的已检查异常:

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的一个漏洞,你就被覆盖了:
try {
    transaction.commit();
} catch (RuntimeException e) {
    // Throw unchecked exception
    throw e;
} catch (Exception e) {
    // Handle checked exception
    // ...
}

猜你在找的Java相关文章