一、健壮性和正确性
健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度
健壮性是针对用户的输入的,通过用户的输入是否合法抛出异常,一般针对前置条件
正确性:程序按照spec加以执行的能力,是最重要 的质量指标
正确性是针对程序内部的结果的,用断言检查结果的正确性,一般针对后置条件
二、exception异常:
程序运行期间可以抛出错误error和异常exception,error一般是程序员无能为力的不可处理的,异常分为两类,一种是runtimeexception及其子类的unchecked exception,另一种是其他的checked exception。
Unchecked exceptions不需要在编译时使用try…catch等机制处理。可以不处理,编译没问题,但执行时出现就导致程序失败,代表程序中有潜在的bug。类似于编程语言中的动态类型检查。
Checked exceptions必须捕获和抛出,否则程序将无法编译(编译器检查您是否为所有Checked exceptions提供了异常处理程序)。类似于编程语言中的静态类型检查。
异常处理:有五种关键字:
try套在能抛出异常的代码外部捕获异常,
catch处理捕获的异常也可以catch里再抛出异常,
finally无论是否发生异常捕获到什么异常再最后都要执行内部的代码,
throws声明可能会抛出的异常或异常的父类,
throw抛出异常
注意:无论是什么类型的异常,程序运行都会在抛出异常的位置结束,并进入catch和finally当中,
如果catch当中没有printStackTrace();甚至下方的栏里不会出现红字。
三、断言assert
断言:在开发阶段的代码中嵌入,检验某些“假设”是否成立。若成立,表明程序运行正常,否则表明存在错误
每个断言都包含一个您认为在程序执行时为真的布尔表达式。如果断言不为真,则JVM 会抛出一个断言异常,这意味着代码中有错误,需要被修复;如果断言为真,则表示程序员代码编写没问题,可以继续下一步操作。
assert影响性能代价很大,一般 用于开发阶段的调试