2015070406 - EffactiveJava笔记 - 第58条 异常使用原则
来源:互联网 发布:翻唱好听的网络女歌手 编辑:程序博客网 时间:2024/06/05 13:29
20150704 星期六 北京
Java程序提供三种可抛出结果,检查异常(checked Exception),运行时异常(RuntimeException),和错误(error).
那么什么情景下使用不同的异常呢?
使用checked Exception的原则是:如果期望调用者能够恰当地恢复(本身程序继续正常运行).
抛出checked Exception,强迫API调用者catch它或者继续抛出它.
未受检异常,就是Error和RuntimeException,在行为上两者等同,都是不需要进行catch的异常和错误.
为什么不需要处理呢?因为他们是不可恢复的,在继续进行下去没有任何意义.
运行时异常,表示API用户没有遵循API规范建立的约定,比如数组下标越界;或者异常情形可以忽略不做处理(个人工作经验)
错误,表示资源不足,约束失败,或者其他程序无法进行下去的条件,因此不要再实现新的Error子类.因此,你抛出的所有未检测异常都应该是RuntimException或者其子类.
如何自定义抛出结构呢?
此类应该是受检异常Exception的子类或者其本身.
对于需要恢复程序继续运行下去的异常,使用受检异常;
对于程序错误,违反API规范,或者无关紧要不需要处理,可以使用运行时异常;
情况并非如此分明,需要独自思考分析.
比如资源枯竭,可能因为程序设计的问题,那么使用受检异常;如果不是,那么使用运行时异常;如果不能确认什么原因,那么还是使用受检异常.
异常对象需要提供捕获异常代码的额外信息,特别是引发异常条件的信息.
受检异常通常指定可恢复的条件,所以提供辅助方法尤为重要.比如手机没话费了,呼叫失败,抛出受检异常,异常需要提供一个访问方法,允许客户查询所缺余额.
- 2015070406 - EffactiveJava笔记 - 第58条 异常使用原则
- 2015070408 - EffactiveJava笔记 - 第60条 优先使用标准异常
- 2015070404 - EffactiveJava笔记 - 第57条 只对异常使用异常(1)
- 2015070405 - EffactiveJava笔记 - 第57条 只对异常使用异常(2)
- 2015070407 - EffactiveJava笔记 - 第59条 避免不必要地使用受检异常
- 2015070506 - EffactiveJava笔记 - 第65条 不要忽略异常
- 2015070304 - EffactiveJava笔记 - 第54条 谨慎使用本地方法
- 2015070409 - EffactiveJava笔记 - 第61条 抛出与抽象对应的异常(1)
- 2015070410 - EffactiveJava笔记 - 第61条 抛出与抽象对应的异常(2)
- 2015070411 - EffactiveJava笔记 - 第61条 抛出与抽象对应的异常(3)
- 2015070412 - EffactiveJava笔记 - 第62条 每个抛出的异常都要有文档
- 2015070102 - EffactiveJava笔记 - 第47条 了解和使用类库(1)
- 2015070103 - EffactiveJava笔记 - 第47条 了解和使用类库(2)
- 2015070207 - EffactiveJava笔记 - 第50条 尽量避免使用字符串(1)
- 2015070208 - EffactiveJava笔记 - 第50条 尽量避免使用字符串(2)
- 2015070209 - EffactiveJava笔记 - 第50条 尽量避免使用字符串(3)
- 2015070702 - EffactiveJava笔记 - 第14条 共有类使用访问方法而非共有属性
- 2015062705 - EffactiveJava笔记 - 第38条 检查参数的有效性
- linux 下使用cobber 批量安装系统
- 《Visual Studio 程序员箴言》读书笔记
- 自己对boot.c 的·理解
- windows8网络和共享中心无法找到各种网络适配器的解决方案
- C语言注释规范
- 2015070406 - EffactiveJava笔记 - 第58条 异常使用原则
- 那些不能错过的Xcode插件
- 为什么yii2 cookie使用起来会失效
- [Android L or M ]解除SwitchPreference与Preference的绑定事件
- 路由前缀列表中prefix-list
- 【Extjs】Model,Store,grid.panel 用法
- memcached内存分配机制
- cocos2dx clippingNode的实现原理
- (转载)智能机器人。