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规范,或者无关紧要不需要处理,可以使用运行时异常;

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

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


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

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为手机账户密码忘记了怎么办 QQ浏览器无法加载插件怎么办 电脑开了机黑屏怎么办 扫描仪打不开运单扫描怎么办 打印机不支持64位系统怎么办 xp系统dnf闪退怎么办 w10电脑所有程序都打不开怎么办 安卓手机太卡怎么办 系统装到f盘了怎么办 虚拟机占c盘内存怎么办 外机连无线虚拟机显示受限怎么办 使用msdn下载解压后怎么办 路由80端口被占用怎么办 c盘拒绝粘贴文件怎么办 oracle数据库密码忘了怎么办 电脑开机时不显示用户名怎么办? xp系统忘记开机密码怎么办 电脑开机密码忘了怎么办 c盘满了怎么办win10 win10电脑开机密码忘了怎么办 win10的开机密码忘了怎么办 u盘中了exe病毒怎么办 眼睛长个麦粒豆怎么办 苹果手机sdk授权失败怎么办 小米5王者荣耀卡怎么办 华为p9手机电池不耐用怎么办 华为g9青春版耗电快怎么办 华为手机摄像头坏了怎么办 华为p10摄像头玻璃划痕怎么办? 华为g9手机音量小怎么办 华为7pius太卡怎么办 华为畅享7plus卡怎么办 华为p9屏幕进水变颜色怎么办? 玩王者荣耀卡退怎么办 华为手机忘记开机密码怎么办 华为p9密码忘了怎么办 华为p9解锁密码忘了怎么办 华为手机不支持联通4g怎么办 酷派手机自动下载软件怎么办 小米5a不能开机怎么办 华为手机的视频找不到了怎么办