本文介绍了面向正确性和健壮性的软件构造,介绍了健壮性和正确性,以及MTBF和MTTF,最后重点介绍了Error和Exception
一、什么是健壮性和正确性?
1、健壮性
系统在不正常输入
或不正常外部情况
下仍能够表现正常的程度。
2、正确性
程序按照spec加以执行的能力,是最重要的质量指标
!
3、正确性和健壮性的比较
二、MTBF和MTTF
1、MTBF(Mean time between failures)
MTBF
(Mean time between failures)是指平均故障间隔时间(平均无故障运行时间),是指相邻两次故障之间的平均工作时间。
2、MTBF与MTTF的区别
MTBF
用于描述可修复系统的平均无故障运行时间, MTTF
(故障前平均时间)描述不可修复系统的故障前平均时间
二、错误Error与异常处理Exception
1、Error与Exception
(1)Error(错误)
:Java虚拟机无法解决的严重问题
。如JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError【栈溢出】和OOM(out of memory),error是严重错误,程序会崩溃。
程序员通常无能为力
,一旦发生,想办法让程序优雅的结束。
(2)Exception
:其他因为编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:空指针异常、读取不存在的文件,网络连接中断等。
2、Error(错误)
(1)error的种类
用户输入错误、设备错误、物理限制
(2)典型的异常
a、VirtualMachineError
:当Java虚拟机坏了,或者耗尽了继续运行所需得资源时抛出。
OutOfMemoryError
:当Java虚拟机因为内存不足而无法分配对象时抛出,垃圾收集器无法提供更多的内存。
StackOverflowError
:当应用递归太深导致栈溢出时抛出。
InternalError
:抛出InternalError表示JVM中发生了一些异常的内部错误。
b、linkageError
:一个类依赖于另一个类;但是编译前一个类之后,后一个类发生了不兼容的变化。
NoClassDefFoundError
:如果JVM或ClassLoader实例试图加载类的定义,但是找不到定义时抛出。
3、Exception(异常)
(1)异常:程序执行中的非正常事件,导致程序无法再按预想的流程执行
在Java中,exception通常是由Throwable派生出来的。
(2)异常分类:
异常通常分为运行时异常
和其他异常
。
运行时异常
:由程序员在代码里处理不当造成的
其他异常
:由外部原因造成的
(3)运行时异常RuntimeException
一般指编译时出现的逻辑错误
,是程序员应该避免出现的异常。
运行时异常属于Unchecked Exception
(之后会介绍到)
可以不做处理,因为这类异常很普遍,若处理可能会对程序的可读性和运行效率产生影响。
常见的运行时异常
NullPointerException
空指针异常
ArithmeticException
数字运算异常
ArrayIndexOutOfBoundsException
数组下标越界异常
ClassCastException
类型转换异常
NumberFormatException
数字格式不正确异常
(4)其他异常
SOLException
操作数据库时,查询表可能发生异常
IOException
操作文件时发生的异常
等等
4、Unchecked Exception和Checked Exception
(1)Unchecked Exception和Checked Exception
Unchecked Exception
:编译器不会检查;可以不处理,编译没问题,但是执行时出现就导致程序错误,代表程序中潜在的bug;从RunTimeException派生
出子类型。
Checked Exception
:编译器帮助程序员检查你的程序是否已经抛出或处理了可能的异常;必须捕获并指定错误处理器handler,否则编译无法通过;从Exception派生
出子类型。
(2)分类
Error
和RuntimeException
属于Unchecked Exceptions
;其它的属于checked Exceptions
。
总结
本文介绍了面向正确性和健壮性的软件构造,介绍了健壮性和正确性,以及MTBF和MTTF,最后重点介绍了Error和Exception