`
TonyLian
  • 浏览: 402014 次
  • 性别: 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

 

分享到:
评论

相关推荐

    十招准确检测出间谍软件

    关闭所有不必要的应用程序,可以避免反间谍软件的干扰,节省时间。 第四招:运行反间谍程序 使用反间谍软件,如 Hijack This,扫描计算机,检测间谍软件。Hijack This 可以扫描计算机的所有线程和注册表,查找不...

    汽车使用完全手册 汽车技术知识

    - **预判路况**:提前减速或加速,减少不必要的加减速。 ##### 8. 夏季行车十防 - **防爆胎**:检查轮胎气压。 - **防自燃**:定期检查电路系统。 - **防晒**:使用遮阳板保护内饰。 ##### 9. 离合器正确使用要诀 ...

    网络中心机房管理制度.pdf

    为了进一步确保机房的安全运行,第四条至第五条制度涉及到了防火安全和应急处理措施。机房内禁止易燃易爆物品的进入,并严格禁止吸烟或进行明火作业,以降低火灾风险。同时,定期检查消防设施和熟悉应急处理程序,使...

    VS2005(c#)项目调试问题解决方案集锦

    本资源集合了VS2005(c#)项目调试过程中常见的问题及其解决方案,旨在提升开发效率,避免不必要的困扰。 一、无法启动调试 有时候,点击“开始调试”按钮后,项目无法正常启动。这可能是因为配置不正确、缺少依赖或...

    安全技术规范

    - **应用程序分配权限合理**:根据最小权限原则为应用程序分配必要的权限,避免不必要的风险。 - **DBA权限分配**:DBA(数据库管理员)的权限应该受到严格的控制,并且只分配给经过认证的人员。 - **在finally中...

    Java基础知识的详细总结

    - 检查异常必须在编译时被捕获或声明抛出。 - 非检查异常(运行时异常)则不需要显式捕获或声明。 - **异常处理语法**: - 使用`try-catch`块来捕获异常。 - 可以使用多个`catch`块来捕获不同类型的异常。 - `...

    编写高质量代码:改善Python代码的91个建议-中文版

    - 异常处理应该简洁明了,避免不必要的复杂性。 16. **深入理解`None`**:探讨`None`在Python中的意义及其正确用法。 - `None`表示空值,在判断对象是否为空时要特别注意。 17. **字符串连接的优化**:比较不同...

    PL-SQL用户指南与参考(译)

    减少集合的大小,释放不必要的空间。 **8、删除集合中的元素(DELETE)** 从集合中移除特定的元素。 **9、使用集合类型参数的方法** 通过参数传递集合类型,实现在不同过程之间的数据共享。 ##### 十一、避免集合...

    Coding Review Checklist(代码审查清单).pdf

    6. **代码冗余**:去除不必要的重复代码,提高代码的复用性和可维护性。 7. **模块化**:评估代码是否已经尽可能地模块化。良好的模块化有助于提高代码的组织性和可扩展性。 8. **全局变量**:减少全局变量的使用,...

    Effective_C#_中文版_改善C#程序的50种方法

    在声明变量时直接初始化可以提高代码的清晰度和效率,避免不必要的赋值语句。 #### 原则13:用静态构造函数初始化类的静态成员 静态构造函数保证了类的静态成员在任何实例被创建之前被正确初始化。 #### 原则14:...

    Java编码规范(日文版)

    合理使用异常处理机制,避免不必要的异常抛出,同时确保异常被捕获并妥善处理。 #### (56) 方法参数的修改 避免在方法内部修改传入的参数,以防止副作用和逻辑混乱。 #### (57) 方法参数的命名 方法参数的命名应...

    Google C++编程规范.pdf

    3. **性能优化**:在关键路径上避免不必要的开销,比如减少虚拟函数调用,使用内联函数等。 #### 五、其他C++特性 这一部分涵盖了C++语言的一些高级特性及其在Google中的应用: 1. **模板**:模板是C++强大的特性...

    java面试题

    - 在适当的地方使用final可以避免不必要的修改,从而减少潜在的错误。 #### 五、Heap与Stack的区别 **知识点:** 1. **Heap**:堆空间主要用于存储对象实例和数组。 2. **Stack**:栈空间主要用于存储基本类型的...

    codewarrior软件图文并茂使用指南

    - **性能优化**:关注代码效率,减少不必要的计算和循环。 - **实时性考虑**:对于实时系统,需要注意任务调度策略的选择以及中断响应时间的优化。 #### 十一、如何使用Processor Expert Processor Expert是一种...

    python爬虫开发常见问题及其解决方法和经验总结.docx

    对于高频访问的资源,可以使用缓存机制减少不必要的网络请求: - **缓存机制**:利用缓存来减少重复请求。 **10.2 负载均衡** 在多线程或分布式爬虫中,合理分配任务以避免单个节点的压力过大: - **任务调度**:...

    Developer开发文章

    当光标位于块的最后一项时,可以使用 `GOTO-ITEM` 函数将光标移动到下一条记录的第一个字段。 #### 3. 如何在启动FORM程序时直接登录到Oracle数据库上? 可以通过设置FORM的属性或使用触发子函数来实现。例如,在 ...

    数据库设计中的14个技巧

    - 减少不必要的查询操作。 - 对数据库管理系统(DBMS)进行适当的配置调整。 - 优化SQL语句,避免复杂的嵌套查询。 以上十四点技巧涵盖了从数据库设计的基础到高级应用,可以帮助数据库设计师更好地理解如何构建...

    JAVA基础面试题部分参考

    - `&&` 是短路逻辑运算符,它仅在第一个表达式为true时才评估第二个表达式,如果第一个表达式为false,则不会评估第二个表达式,这有助于避免不必要的计算和潜在的运行时错误。 - `&` 是按位与运算符,同时也是一...

Global site tag (gtag.js) - Google Analytics