Java中使用异常类及其子类,对程序中出现的各种异常事件给出一个统一的、简单的抛出错误和异常的处理错误的机制。当程序出现非正常情况时,系统就会创建异常类的一个对象。当一个异常对象产生后,程序中使try…catch块的catch语句捕捉这个异常对象,并做出相应的处理。
下面是java处理异常的处理机制包括抛出异常对象和处理异常。先讲异常的处理先,异常分为两种:Error和 Exception。编写程序时应对考虑异常的产生和处理。通常,程序不需要处理Error类型的异常,但是应关注Exception类型的异常。如果方法的代码中可能产生异常,而编程时又不知道如何处理它,那么可以简单地抛出异常,留给哪些调用此方法的代码部分去处理。
指明一个方法可以抛出异常的方式为:在方法定义的后面加上throws关键字,把抛出的异常类型写上,如下所示:
Int method1()throws EOFException,FileNotfoundException
{ //代码省略
}
上述代码表明方法methodl 将抛出异常EOFException 和 FileNotfoundException,而不对这些异常进行处理。处理异常必须使用try…catch,把可能产生异常的代码放在try语句块中,对不同类型的异常处理的代码放在catch中,这样,当异常产生时,程序会自动执行对应的catch块。如下:
Public class TryException{
Public static void main(String[] args){
Int i= 1; int j = 0;
try{
System.out.println(“在Try语句块中:“+”i=”+i+”j=”+j);
System.out.println(i/j);
System.out.println(“Try语句块的最后一句”);
}catch(ArithmeticException e){
System.out.println(“算术运算异常被捕获”);
System.out.println(“catch语句块中最后一句”);
}
System.out.println(“try或者catch语句块后!”);
}
}
运行结果为:在Try语句中:i=1 j=0
算术运算异常被捕获
Catch语句块中最后一句
Try或者catch语句块后!
从上面的列子可以看出,由于产生了一个算术运算异常,try语句部分的System.out.println(“Try语句块的最后一句”);没有执行,而直接执行了catch语句块,这种方式能够将错误处理单独放到catch块中进行处理。如果没有抛出异常,那么try语句块将完整地执行,而catch语句块中的语句将不被执行。
try与catch语句块是一个完整的整体,中间不能加入除了注释以外的其他语句。一个try语句后可以跟多个catch语句,每个catch语句处理一种异常类型,需要注意的是:如果异常的类型之间存在继承关系,那么最底层子类型应该在最前面的catch语句中,而最高层的超类型应该在最后的catch语句中。
当异常出现时,try语句块中的其余语句就会被跳过,这可能导致一些问题,列如资源释放,为此可以采用finally字句。finally字句和try语句相配套的,如果try语句块执行了,那么finally字句必定会执行,因此可以在finally字句中写上哪些必须被执行的代码。一个try语句必须至少有一个catch字句或者finally字句。