java怎么捕获多个异常处理_捕获多个Java异常时,如何在不编写重复代码...

我还阅读了其他一些文章,例如this one,以避免在Java catch块中重复.显然,我真正想要的是“多捕获”,但是看到Java 7尚未出现,是否有一个很好的模式可以让我向异常中添加状态,然后重新抛出它们,而无需添加catching the kitchen sink?

具体来说,我有一些代码可以进行库调用,这可能引发异常,但没有提供足够的上下文来成功进行调试.我发现自己有问题,然后继续进行操作,将库调用包装在try / catch中,捕获特定的异常,然后在catch块中添加额外的状态信息,然后重新抛出捕获的异常.然后,我反复遍历该循环,每次找到要记录的新错误条件.我结束了

try {

make_library_call();

}

catch (SomeException e){

throw new SomeException ("Needed local state information is " + importantInfo, e);

}

catch (SomeOtherException e){

throw new SomeOtherException ("Needed local state information is " + importantInfo, e);

}

catch (YetAnotherException e){

throw new YetAnotherException ("Needed local state information is " + importantInfo, e);

}

等等等等.我想我更想看到的是

try {

make_lib_call();

}

catch(Exception e){

e.AddSomeInformationSomehow("Needed Info" + importantInfo);

throw e;

}

假设在那种情况下e会在重新抛出时保留其实际的运行时类型-在这种情况下,即使不检查也可以进行检查,因为我会重新抛出它们,并且它们将从携带额外的状态信息中受益也一样我想替代品可能像

try{

make_lib_call();

}

finally {

if (/*an exception happened*/)

logger.debug("Some state info: " + importantInfo);

}

但我不知道如何写条件那是疯狂的/错的吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值