Java中的异常类都继承自Trowable类。一个Throwable类的对象都可以抛出(throw)
Throwable对象可以分为两组。一组是unchecked异常,异常处理机制往往不用于这组异常,包括:
- Error类通常是指Java的内部错误以及如资源耗尽的错误。当Error(及其衍生类)发生时,我们不能在编程层面上解决Error,所以应该直接退出程序。
- Exception类有特殊的一个衍生类RuntimeException。RuntimeException(及其衍生类)是Java程序自身造成的,也就是说,由于程序员在编程时犯错。RuntimeException完全可以通过修正Java程序避免。比如将一个类型的对象转换成没有继承关系的另一个类型,即ClassCastException。这类异常应该并且可以避免。
剩下的是checked异常。这些类是由编程与环境互动造成程序在运行时出错。
异常处理几点说明
异常对象在系统运行过程中自动创建,当然所创建的对象类型是根据不同类型的异常而有差异的,系统会把出现异常的具体信息以及导致异常的原因写在这个对象中。
异常对象主要有两个属性:
a. detailMessage 该异常的具体信息
b. cause 说明了导致这个异常的原因。
异常位置的跟踪和定位:
e. printStackTrace();
由于try块中可能有多条语句,异常爆发了,对象被抛出了,到底是那条语句导致的呢?
printStackTrace()会详细的告诉你对应的位置。
异常被捕获处理后,异常try…catch..结构后的语句将继续运行,程序不会中止。
但是try块中发生异常的语句之后的语句将不再运行。
坚强的finally块,其只怕System.exit(0), 无论try块中有异常,无异常,有无漏网之鱼均可运行,也不怕try中中途return.
为了有效的释放在try语句运行过程中申请的资源,finally块为此而成.
运行时异常(Runtime Exception)
所有运行时异常 extends RuntimeException.
运行时异常是在程序运行过程中爆发的异常,其相对影响面小,问题不严重,一般不影响程序继续运行。
运行时异常无需捕获,自动抛出,也无需throws声明。
检查异常 (checked Exception)
检查异常 extends Exception
其要么try…catch..捕获,要么在方法签名末尾显式申明抛出。