1:Throwable类
Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。
它的两个子类:Error 和 Exception,通常用于指示发生了异常情况。
java文档
2:RuntimeException
运行异常(也称为unchekckedException)有很多子类,他们会自动被java 虚拟机抛出,所以不必在异常说明中把他们列出来,运行异常代表的是变成错误。一般不进行捕捉。(thinking in java p263)
3:抛出异常-throw,throws
当抛出异常后,有几件事情会随之发生。首先:同java中其他对象的创建一样,将使用new在堆上创建异常对象,然后,当前的执行路径(不能继续下去了)被终止,并且从当前环境中弹出对异常对象的引用。此时,异常处理机制接管程序,并开始寻找一个“恰当的地方”(即异常处理程序 thinking in java p 250)来继续执行程序,这个恰当的地方就是异常处理程序。它的任务是将程序从错误状态中恢复,以使程序要么换一种方式运行,要么继续运行下去。
4:捕获异常
如果在方法内部抛出了异常,或者在方法内部调用的其他方法抛出了异常,这个方法将在抛出异常的过程中结束。若不想程序结束,可捕获异常:try块。
好处:可以把所有的动作都放到try里面,然后只需要在一个地方便可以捕获所有异常,完成任务的代码与错误检查的代码没有混淆在一起,这将使代码更容易编写和阅读。
try{
}catch(Type1 id1){
// handle exception of type1
}catch(Type2 id2){
//handle exception of type2
}finally{
//必须执行
}
5:异常处理程序(关键字catch表示)
每个catch语句中都有一个类型,只有匹配的catch子句才能得到执行,并且执行完便结束,不再执行其他的catch语句(不同于swutch语句)
6:finally关键字
无论异常是否被抛出吗,finally子句都能被执行。对于没有垃圾回收机制的语言,finally使内存保证释放。在java中把处内存之外的资源恢复到他们的初始状态时,要用到finally子句:已经打开的文件或网络连接等。