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