1.如何使用受检的异常?

如果一个方法抛出了一个或者多个异常,那么调用该方法的代码就必须在一个或者多个catch块中处理这些异常,或者方法上抛出这些异常,并让他们传播出去,无论是哪种方法,都给程序员带来了负担。

2.如何避免使用受检的异常?

异常的设计原则是在不正常的的情况下处理,如果可以把不正常的情况改变为正常思路下的部分,那么可以减少异常处理.不正常是特例,正常才是主流。

把”受检异常变成未受检异常”的方法是,把抛出异常的方法分解为两个方法,一个方法返回boolean,表示是否应该抛出异常.案例如下:

    try {  obj.action(args);  } catch (TheCheckedException e) {  ....  }  

重构成:

    if (obj.actionPermitted(args)) {  obj.action(args);  } else {  //...  }  

例如我们经常使用的打开文件的操作,用普通的判断语句(重构方法)可以判断是否存在文件,只需要在不存在文件的情况下提醒用户就可以了,所以不必要抛出FileNotExistException。

Effective Java之避免使用受检的异常(五十九)相关推荐

  1. Effective Java之优先使用标准的异常(六十)

    Java平台类库提供了一组基本的未受检的异常,他们满足了绝大部分API的异常抛出异常. 为什么优先使用标准异常 1.它使你的API可读性更强,因为它与程序员习惯的用法一致. 2.异常类越少,程序在类装 ...

  2. Effective Java之谨慎地使用本地方法(五十四)

    本地方法,是指本地程序设计语言(c,或者c++)来编写的特殊方法. 本地方法在本地语言中可移植性任意的计算任务,并且返回到java程序语言. 为什么说谨慎使用本地方法? 1.如果调用了一个本地方法,那 ...

  3. Effective Java之基本类型优于装箱类型(四十九)

    基本类型和装箱类型的区别: 1.基本类型只有值,而装箱类型是引用,有值和地址. 2.基本类型默认值不同,见下面程序. 3.基本类型比装箱类型更节省时间和空间. public class test {p ...

  4. 《Effective Java》读书笔记八(异常)

    No57 只针对异常的情况才使用异常 异常应该只用于异常的情况下,它们永远不应该用于正常的控制流. No58 对可恢复的情况使用受检异常,对编程错误使用运行时异常 Java程序设计语言提供了三种可抛出 ...

  5. Effective Java之考虑自定义的序列化模式(七十五)

    为什么自定义序列化? 这里直接举一个书上的例子 public final class StringList implements Serializable {private int size = 0; ...

  6. 全国计算机等级考试——二级JAVA完整大题题库【五十三道】

    全国计算机等级考试二级 JAVA 题目内容 编写于2023.04.10 分为40道选择题和3道大题(大题是程序填空类型) 其中选择题只能进去做一次,一旦退出来则不可再进(注意!).大题可以重复进入,重 ...

  7. Effective Java之对可恢复的情况使用受检异常,对编程错误使用运行时异常(五十八)

    java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception. 异常分成三种结构 1.错误:Error是Throwable 的子类 ...

  8. Effective Java之接口优先于反射机制(五十三)

    核心反射机制java.lang.reflect提供了"通过程序来访问关于已装载的类的信息"的能力,给定一个Class实例,可以获得Constructor.Method.Field实 ...

  9. Effective Java之努力使失败保持原子性(六十四)

    这是我们需要遵守的规则: 1.失败的方法调用应该使对象保持在被调用之前的状态. 2.错误通常是不可恢复的,当方法抛出错误时,不需要保持原子性. 3.作为方法规范的一部分,方法产生的任何异常都应该让对象 ...

最新文章

  1. dropout的原理
  2. 深入理解linux系统的目录结构
  3. 安装sql server 2000时,提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作,需重起...
  4. windows media player 9_openmeetings(开源视频会议系统)的详细安装步骤 (windows版)
  5. mysql floor报错_【学习笔记】MYSQL的floor报错原理分析总结
  6. Oracle中两个重要的语句
  7. 面试官通过21天步数考察候选人诚意,结果拒了清华生收了三本生
  8. Java知多少(2)虚拟机(JVM)以及跨平台原理
  9. C# WPF 一个设计界面
  10. lightoj1138
  11. opencv 图像人物识别
  12. 南华大学计算机考研真题,2021南华大学考研历年真题复习资料
  13. 首次曝光:大厂都是这样过1024的,看的我酸了
  14. 1459. 奶牛体操
  15. 云宏信息科技股份有限公司
  16. stm32 f105 RBT6 建立工程头文件
  17. 我所关心的POS打印机技术参数
  18. 102-并发编程详解(中篇)
  19. 【有奖测评】我的产品你来反馈,有奖
  20. 有哪些「神奇」的数据获取方式?

热门文章

  1. Docker常用操作命令(二)
  2. 浏览器实验中的故障排除
  3. 征稿:2018-2019音视频技术回顾与展望
  4. 第一届WebRTCon在上海举行
  5. C++之类型萃取技巧
  6. 微信基于时间序的海量存储扩展性与多机容灾能力提升
  7. Nginx在多层代理下获取真实客户端IP地址
  8. 无锁链表的c++实现
  9. centos7 redis5.0以前版本 集群部署示例 - 第一篇
  10. 使用eclipse开发javaweb登录功能