Construction for Robustness and Correctness
什么是正确性和健壮性
健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度
正确性:程序按照spec加以执行的能力,是最重要的质量指标!
怎么衡量正确性和健壮性
外部观察角度
平均故障间隔时间是指系统在运行期间内在故障之间的预计经过时间。
平均故障间隔时间计算为系统的算术平均(平均)故障间隔时间。
对于复杂的、可修复的系统,故障被认为是那些超出设计条件,使系统停止服务,进入维修状态。
在此定义下,可以保留或维持在未修复状态,且不会使系统停止服务的故障不被视为故障。
平均故障间隔时间(Mean time between failures, MTBF)表示可修系统发生两次故障的预期时间,平均故障间隔时间(Mean time to failure, MTTF)表示不可修系统发生故障的预期时间。
内部观察角度
残余缺陷率指的是软件发布后遗留下来的bug
例如,如果发布了100万行典型的行业源代码(1个缺陷/kloc),这意味着遗漏了1000个bug !
Java中的错误和异常
java中的Throwable分为两种,一种是Error,一种是Exception
对于java中的error一般是内部错误,程序员通常无能为力,一旦发生,想办法让程序优雅的结束
而异常是你自己程序导致的问题,可以捕获、可以处理
一些常见的error:用户输入错误,设备错误,物理限制
异常
既然Error捕获了程序员也无能为力,那么就关注那些捕获了可以进行处理的Exception
什么是异常
异常:程序执行中的非正常事件,程序无法再按预想的流程执行,将错误信息传递给上层调用者,并报告“案发现场”的信息,return之外的第二种退出途径,若找不到异常处理程序,整个系统完全退出。
异常的分类
异常分为:运行时异常(RuntimeException)和其他异常,其中运行时异常是由程序员在代码里处理不当造成,而其他异常是由外部原因造成
怎么检查异常
编译器可帮助检查你的程序是否已抛出或处理了可能的异常
但是若没有对异常进行捕获,那么函数可能直接把异常抛出到控制台,由控制台暂停程序的运行并输出异常信息。
对于抛出和捕获异常:
throws 本方法可能会发生XX异常
throw 抛出XX异常
try, catch, finally 捕获并处理XX异常