2015070407 - EffactiveJava笔记 - 第59条 避免不必要地使用受检异常

本文探讨了异常处理在编程中的应用与滥用问题,提出通过将受检异常转化为未受检异常,以及合理分解方法来减少异常处理的负担。讨论了在不同场景下重构方法的适用性和潜在风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    20150704 星期六 北京

    使用异常可以增加可靠性,但是过分使用异常就会导致问题不断.

   (异常的设计原则是在不正常的的情况下处理,如果可以把不正常的情况改变为正常思路下的部分,那么可以减少异常处理.不正常是特例,正常才是主流.)

   一个方法抛出过多受检异常,调用此方法就必须处理这些异常或者抛出继续传播,不论何种处理,都增加程序开发的负担.

   如果方法只抛出一个受检异常,这种情况下,是否有别的路径避免使用受检异常呢? 把"受检异常变成未受检异常"的方法是,把抛出异常的方法分解为两个方法,一个方法返回boolean,表示是否应该抛出异常.案例如下:

   

try {
    obj.action(args);
} catch (TheCheckedException e) {
      ....
}

   重构后        

         

if (obj.actionPermitted(args)) {
    obj.action(args);
} else {
    //...
}

   虽然重构并不恰当,但是在恰当的地方,会是使API更加舒服和灵活.

   如果对象缺少外部同步情况下被并发访问,或者被外界修改状态,这种重构就是不恰当的,因为actionPermitted和action调用时间间隔中,对象状态可能发生变化.

   如果actionPermitted必须重复action中的方法,出于性能考虑,这种API的重构不值得去做.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值