加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:58:11 所属栏目:Java 来源:网络整理
导读:编辑:这个问题只涉及 Java 1.6(及以下).抱歉没有在原帖中说清楚. 层次结构here显示Java异常分为两种类型:RuntimeException而不是RuntimeException: 我可能错过了一些东西,但是分成UncheckedException和CheckedException之类的东西不是更好吗?例如,以下语
编辑:这个问题只涉及 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
    // ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读