健壮性与正确性
健壮性:
⎩⎨⎧处理未期望的行为/错误终止执行也要返回错误信息信息要有助于debug
我们要注意:封闭细节+极端情况
{健壮性:容忍错误,使用户容易正确性:不满足前置条件的就可以做任何处理,使开发者容易
健壮性+正确性=可靠性
我们的接口要做到:
{对外:注重健壮性对内:注重正确性
术语:
⎩⎪⎪⎨⎪⎪⎧error:程序员犯的错误defect:缺陷,bug的根源fault:defect≈fault,bugfauilure:失效,运行时的外在表现
error导致→defect/fault/bug导致→failure
test:对合法和非法的都要测试
Code→Test→Debug
健壮性:错误与异常处理
Throwable:
{Error:我们无能为力,由于输入/设备/物理因素导致的Expection:可处理,用try−catch向上传

Error

Expection:
{RuntimeExpection:不能有的→代码不当导致的,验证后一定可以避免的其他:是我们要进行处理的→健壮性编程面向的对象,验证也不一定能避免
{RuntimeExpection:不能有的→代码不当导致的,验证后一定可以避免的其他:是我们要进行处理的→健壮性编程面向的对象,验证也不一定能避免
check与uncheck
{uncheck:error+RuntimeExpection不能恢复check:其他的异常,由编译器(静态)检查得出,能恢复

关键字
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧trycatchfinallythrow:扔出checked异常,不建议扔出unchecked(语法上允许)throws:自己的+下面传上来的

TWR:try(Resource res = ……){……}
throwable:栈结构
正确性:断言与防御式编程
目标:fail fast
断言
assert (期望的结果): “提示信息”;
AssertError→直接结束
判断的内容:RI(表示不变量)、内部不变量、控制流不变量、方法的pre、方法的post
不用assert外部的不受控制的
开发阶段使用,运行时注释掉→影响性能和健壮性
assert的开关:
{开:−ea关:−da
{assert:针对正确性,不可以发生的情况exception:针对健壮性,可以发生的不正常情况
防御式编程
对于非法输入:garbage in, garbage out