第七章
1. 健壮性和正确性
(1)健壮性:处理各类情况的能力
(2)正确性:正确实现规格说明的能力
(3)测量:平均故障间隔时间(MTBF)、残余缺陷率(软件发布后留下的bug)
2. Throwable:有两个子类,即error和exception
(1)error:程序无法处理的错误,通常是JVM的问题,不需要catch
·处理策略:预先阻止、错误中恢复、优雅地退出
·处理方式
- 返回中立值
- 替换下一个有效数据
- 返回与前一次相同的答案
- 代替最接近的法律价值
- 将警告消息记录到文件
- 返回错误代码:设置状态值 -> 返回状态值 -> 利用异常机制
- 调用一个错误处理例程/对象
- 显示错误信息
- 在本地处理错误
- 关掉程序
(2)exception:程序自身可以处理,代码可以通过异常机制将错误或异常事件传递给调用它的代码,Java无法以正常方式完成其任务时允许每种方法都有一个替代退出路径
3. Runtime 异常、其他异常
(1)Runtime异常:程序员自己的错误,如空指针、数组越界、类型转换等
(2)其他异常:通常为IOE异常,即找不到文件路径等
4. Checked 异常、Unchecked 异常
(1)Checked 异常:每个调用者都应知道并处理的错误
·处理机制
- 抛出:声明是throws,抛出时throw
- 捕获(try/catch/finally):try出现异常,忽略后面代码直接进入catch;无异常不进入catch;若catch中没有匹配的异常处理,程序退出;若子类重写了父类方法,父类方法没有抛出异常,子类应自己处理全部异常而不再传播;子类从父类继承的方法不能增加或更改异常;finally中语句不论有无异常都执行
- 处理:不能代替简单的测试,尽量苛刻、不过分细化、将正常处理与异常处理分开、利用好层次结构、早抛出晚捕获、避免不必要的检查
- 清理现场
- 释放资源
(2)Unchecked 异常:JVM抛出,如空指针、数组越界、数据格式、不合法的参数、不合法的状态、找不到类等
5. 自定义异常类:继承自Exception,在构造函数中可通过super(key)修改默认值