`
TonyLian
  • 浏览: 396623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【第41条】避免不必要地使用被检查的异常

阅读更多

   也就是说,在使用checkedException时,你必须确认这里的的确确是应该抛出一个异常,否则不要乱抛。如果一个方法会抛出一个或者多个被检查的异常,那么调用该方法的代码就必须要么在一个或几个try-catch块中处理这些异常,要么就要声明(throws)它们,以便向上抛出去。而无论哪种方法,都给程序员增添了不可忽略的负担。

 

    回想一下上一条最后一段关于.Net为什么选择了更为简单化的异常处理,避免这种负担或许就是其中一大原因。(.Net中根本就没有throws这个语法)

 

    解决方案是:

1)尽量在API内部处理掉checkedException。如输出错误信息或写日志后,结束当前程序。

2)对于那些本来就是该向外抛出异常来表明内部的某种失败的情况下,调用者尽量在调用之前确保可以成功再调用。见【第39条】的“状态检测”方式

3)在适当的时候,使用RuntimeException。如果API不能做的更好,也许RuntimeException会更为适合。

 

 

 

【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208

 

分享到:
评论

相关推荐

    C#微软培训资料

    第十一章 方 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 ...

    汽车驾驶教程图解

     为了警告或提示对方危险,必要时适当地使用喇叭。 八、仪表的读法 首先应该知道仪表的名称并了解其性能。行驶中需要经常看仪表,以确定汽车行驶状态是否正常。行驶中如果警告灯亮,应该停车进行检查。 ? 新手学...

    会计理论考试题

    第一套 选择题 1.计算机感染病毒后会产生各种现象,以下不属于病毒现象的是__D__。 A、文件占用的空间变大 B、发生异常蜂鸣声 C、屏幕显示异常图形 D、机内的电扇不转 2. Windows98支持下面___C__网络协议。 A、...

    超级有影响力霸气的Java面试题大全文档

    在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    8.5.1 避免不必要的复制操作 389 8.5.2 应用rvalue引用形参 392 8.5.3 命名的对象是lvalue 394 8.6 类模板 399 8.6.1 定义类模板 400 8.6.2 根据类模板创建对象 402 8.6.3 使用有多个形参的类模板 405 8.6.4...

    java 面试题 总结

    在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

    《计算机操作系统》期末复习指导

    第四章 存储管理 1、存储管理使用的基本概念 •逻辑地址与物理地址 在具有地址变换机构的计算机中,允许程序中编排的地址和信息实际存放在内存中的地址有所不同。前者叫逻辑(相对)地址,后者叫物理...

    新手学习C++入门资料

    上面例子中,第一次调用show()函数时,让编译器自动提供函数原型中指定的所有默认参数,第二次调用提供了第一个参数,而让编译器提供剩下的两个,第三次调用则提供了前面两个参数,编译器只需提供最后一个,最后一...

    易语言程序免安装版下载

    修改BUG:超级列表框在属性“整行选择”为真时,鼠标单击第一列右面也会导致第一列中的选择框被选中或取消选中。 21. 修改BUG:Sqlite3数据库支持库中“Sqlite数据库.取错误文本()”返回的文本是UTF-8编码(应是GB...

    语言程序设计课后习题答案

    另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作为注释处理。 2-8 什么叫做表达式?x = 5 + 7是一个表达式吗?它的值是多少? 解: 任何一个用于计算值的公式都可称为表达式。x = 5 + 7是一...

Global site tag (gtag.js) - Google Analytics