1.健壮性和正确性
⇒ 健壮性:系统在不正常输入或不正常外部环境下仍能表现正常的程度
⇒ 面向健壮性的编程:
⇒处理未期望的行为和错误终止
⇒ 即使终止执行,也要准确/无歧义的向用户展示全面的错误信息
⇒错误信息有助于debug
⇒正确性:程序按照spec加以执行的能力,是最重要的质量指标
⇒正确性:永不给用户错误的结果
健壮性:尽可能保证软件运行而不退出
正确性倾向于直接报错,健壮性倾向于容错
⇒对外的接口:健壮性;对内的实现:正确性
⇒可靠性=正确性+健壮性
⇒软件错误的名词:
⇒Error:程序员码代码时犯的错误
⇒defect:缺陷,可能导致软件运行出不同于期待结果的因素
⇒fault:错误的方法
⇒failure:失效,运行时的外在表现
⇒因果关系:error⇒defect/fault⇒failure
⇒ Mean Time between failures (MTBH)
⇒ 测量健壮性和正确性
⇒ 定义取决于什么叫做软件失效
⇒ 外部测量的角度
⇒ Residual defect rates 内部观察角度(间接)
⇒残余缺陷率:每千行代码中遗留的bug数量
2.Throwable
⇒Java中所有的异常都是从throwable类中发展出来的子类
3.Runtime异常和其他异常
⇒异常
1)Runtime异常:程序员在编程时的错误造成的
2)其他异常:由外部原因造成的。例如:I/O异常
⇒Runtime异常:数组越界;空指针
⇒其他异常:打开一个不存在的文件;读文件时的越界
⇒ If it is a RuntimeException , it was your fault
4.Checked异常和Unchecked异常
⇒Checked异常: you have to either catch and handle the exception or tell compiler that you can’t handle it . by declaring your method throws that exception
⇒非Runtime异常⇒ try /catch
⇒从Exception派生出子类,若不用try /catch或方法生命中throws就不能编译通过
⇒Unchecked异常:
Errors和Runtime异常
无需捕获/处理
代码重构
从 RuntimeException派生出来,无需在方法上加throws也能编译通过
⇒例子: ArrayIndexOutofBoundsException;NullPointerException;NumberFormatException
⇒编程和编译的时候,IDE与编译器均不会给出任何错误提示