2015070406 - EffactiveJava笔记 - 第58条 异常使用原则

   20150704 星期六 北京

   Java程序提供三种可抛出结果,检查异常(checked Exception),运行时异常(RuntimeException),和错误(error).

   那么什么情景下使用不同的异常呢?

   使用checked Exception的原则是:如果期望调用者能够恰当地恢复(本身程序继续正常运行).

   抛出checked Exception,强迫API调用者catch它或者继续抛出它.

 

   未受检异常,就是Error和RuntimeException,在行为上两者等同,都是不需要进行catch的异常和错误.

   为什么不需要处理呢?因为他们是不可恢复的,在继续进行下去没有任何意义.

   运行时异常,表示API用户没有遵循API规范建立的约定,比如数组下标越界;或者异常情形可以忽略不做处理(个人工作经验)

   错误,表示资源不足,约束失败,或者其他程序无法进行下去的条件,因此不要再实现新的Error子类.因此,你抛出的所有未检测异常都应该是RuntimException或者其子类.

 

   如何自定义抛出结构呢?

   此类应该是受检异常Exception的子类或者其本身.

   对于需要恢复程序继续运行下去的异常,使用受检异常;

   对于程序错误,违反API规范,或者无关紧要不需要处理,可以使用运行时异常;

   情况并非如此分明,需要独自思考分析.

   比如资源枯竭,可能因为程序设计的问题,那么使用受检异常;如果不是,那么使用运行时异常;如果不能确认什么原因,那么还是使用受检异常.


   异常对象需要提供捕获异常代码的额外信息,特别是引发异常条件的信息.

   受检异常通常指定可恢复的条件,所以提供辅助方法尤为重要.比如手机没话费了,呼叫失败,抛出受检异常,异常需要提供一个访问方法,允许客户查询所缺余额.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值