异常处理
引起程序中断,影响程序正常运行的事件称为异常。
常见的异常有:数组下标越界、除数为零、内存溢出、文件找不到、方法参数无效等。这些异常发生后会导致程序中断,
Java语言采取面向对象的方法来处理异常。Java程序在运行的过程中,如果发生一个可识别的运行错误,系统会产生一个相应的异常类对象,并进一步寻找异常处理代码来处理它,确保程序能从故障中恢复,是程序正常运行下去,直到结束。
现通过下例来说明Java异常处理机制对Java程序健壮性的提高
class Echan0{
static void method(){
int x=0,z=10;
int y=z/x;
System.out.println("z="+z);
}
public static void main(String[] args){
method();
Sysetem.out.println("Affter method");
}
}
程序运行:
Exception in thread"main" java.lang.ArithmeticException;/by zero
at Echan0.method(Echan0.java:4)
at Echan0.main(Echan0.java:7)
______________________________________________________
Press any key to continue...
显示信息指明异常的类型:ArithmeticException:/by zero(算数异常/用0除),在这个程序中,没有异常处理的程序代码,这是因为除数为零是算数异常,它属于运行时异常,通常,运行时异常不在程序中做处理。
我们可以用try-catch对除数为0进行异常处理,这样,程序就能够一直运行到程序结束处,不会中途终止程序运行
class Echan0{
static void method(){
int x=0,z=10;
try{ int y=z/x;
System.out.println("z="+z);
}catch(ArithmeticException e){
System.out.println("算术异常“)
}
System.out.println("After try/catch block.")
}
public static void main(String[] args){
method();
Sysetem.out.println("Affter method");
}
}
程序运行:
算术异常
After try/catch block.
Affter method
________________________________________________________
Press any key to continue...
程序在执行y=10/x时,在除数x=0而抛出错误(异常)后,只是中断程序在try快中的执行,程序跳转catch块中继续执行,直到程序结束。
一般来说,一个异常处理应该完成以下三个过程():抛出异常(即根据异常类型产生异常对象);捕获异常;处理异常。