程序的健壮性与正确性复习概要

    技术2025-07-24  17

    unchecked Exception(不需要捕获): Eror:不是由程序引起的,是由外部环境(设备错误等)引起的,通常程序员无法处理。 RuntimeException:由于程序员写的程序本身存在的错误引起。 checked Exception(一定要捕获): other Exception:使用错误,client引起。

    异常应该用来捕获client端的错误,而非程序本身的错误。

    异常处理的5个关键字: try:探测异常 catch:如果异常出现,进入错误处理路径;也可抛出异常(更具体)。 finally:无论是否出现异常,finally内的语句必须执行 throws:方法中带有throws,说明此可能会抛出throws后面的异常。java中的任何一个程序都不会通过throws语句声明会抛出RuntimeException throw:抛出异常

    checked异常和unchecked异常对比:

    一个例题: a.未出现异常的执行顺序:1->2->5->6 b.1中出现异常并捕获:1->3->4->5->6 c.1中出现异常未捕获:1->5 d.1中出现异常并捕获,catch中第3步抛出新异常:1->3->5

    例题 最终打印false,finally中语句一定执行。

    try-with-resource:发现异常时处理资源的另外一种方法(之前是使用finally),处理方式是将资源放在try中,如下图所示:

    自定义异常类:

    断言面向开发者,异常面向client。

    调试:重现bug,诊断bug(定位错误占用了大量时间),修复bug,反思。

    测试: 黑盒测试:测试程序是否符合规约。主要通过等价类划分的方法(划分时注意考虑边界值,如对于一个整数a,其边界为a很小,a很大,还要考虑特殊值,如a=0)来设计测试用例,例如:比较两个整数的大小,对于输入的两个整数a,b,有以下等价类划分:a<b;a=b;a>b同时考虑边界a或b为小(大)整数。 得到等价类划分后,设计测试用例有两种考虑方向:一是笛卡尔积全覆盖,一种是覆盖每个取值(最少1次即可)。 白盒测试:与黑盒测试相对应的是白盒测试,白盒测试依据程序实现细节来设计测试用例,主要考虑测试覆盖度。 测试效果:路径覆盖>分支覆盖>语句覆盖 测试难度:路径覆盖>分支覆盖>语句覆盖 回归测试:一旦程序被修改,重新执行之前所有的测试。

    Processed: 0.011, SQL: 9