捕获例外:
Java产生例外对象后,将去寻找能够处理此例外的方法并交之处理,这一过程成为捕获(catch)。若找不到,运行时系统将终止
抛弃例外:
一个方法若不知道如何处理出现的例外,可声明抛弃(throws)
jdk中,每个包都定义了例外类,所有的例外类都直接或间接继承于Throwable类。
java中的例外类可分为两大类:
error
exception
运行时例外
继承于RuntimeException的类都属于运行时例外,如算数(除零),数组越界等,由于例外产生的位置是未知的,java编译器允许程序员在程序 中不对它们作出处理。
非运行时例外
除运行时例外,便是非运行时例外,如FIleNotFindException(文件未找到例外),java编译器要求对这种例外必须作出处理,捕获例外或抛弃例外
例外的处理
捕获例外
通过try-catch-finally语句实现
try:try语句所限定的代码块在执行过程当中可能会产生例外对象并抛弃。
catch:每个try块可以伴随一个或多个catch语句,用于处理try块中所生成的例外事件。
catch语句只需一个形参指明它所能够捕获的例外类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的例外对象传递给catch 块。
类Throwable提供了getMessage()方法:得到异常的相关信息,printStackTrace()用来跟踪事件发生时执行堆栈的内容。
catch语句的顺序,第一个例外捕获到后,剩下catch不再捕获。故catch安排的顺序应该为从特殊到一般。即先安排子类在安排父类。
finally:为统一的出口,无论有无例外,都会执行。
抛弃例外:
如果一个方法中生成了一个例外,但是这一方法并不确切地知道该如何处理这一异常事件。
此时,这一方法应当声明抛弃例外,使得例外对象可以从调用栈向后传播,直到有合适的方法捕获它为止。
声明抛弃:
声明抛弃例外实在一个方法声明中的throws子句中指明的。
public int read() throws IOException {
...
}
抛出例外:
抛出例外就是产生例外对象的过程。首先生成例外对象,由虚拟机或者某些类的实例生成。通过throw语句实现。
IOException e = new IOException();
throw e;