异常处理机制:
异常就是程序执行中发生的不合理情况,异常发生时程序执行自动终止。Java语言提供了异常处理机制,通过该机制处理异常可以在一定程度上完善程序的合理性、正确性。Java异常处理机制是通过异常类来实现,在Java中,Throwable类是所有错误和异常的超类,它有两个子类Error类和Exception类,其中Exception类及其子类用来捕获和处理程序执行过程中的异常。
异常类型:
检查异常:可以被编译器分析的异常为检查异常;
非检查异常:编译器不检查非检查异常;
常见异常类:
1、NullPointException NullPointException类异常是由于调用null对象的方法或对一个null数组进行求数组长度等操作而出现的异常
例:JPanel panel;
panel.setUI() ;
2、ClassCastException 当将对象强制转换成与该对象所在类不兼容的另外一种类时会出现ClassCastException类异常
例:Objict obj = new Objict();
String s=(String)obj;
3、ArrayIndexOutOfBoundsException 当数组下标大于数组长度时所引发的异常
例:int[ ] Array=new int [3];
Arry[3] =2;
4、IOException 使用流、文件和目录访问信息时引发的异常的基类,其中,子类FileNotFoundException较常见,当不存在指定路径名文件或者
虽存在但由于某些原因不能访问时引发FileNotFoundException类异常
例:FileInputStream file = new FileInputStream("D://Test.txt")
D:// Test.txt文件不存在时出现异常
5、NumberFormatException Java程序仅接受字符串作为输入,当将字符串转换成另一种数值类型是易出现NumberFormatException类异常
例: String s="123a";
int a=Integer.parseInt(s);
异常处理方式:(1)、try/catch或try/catch/finally
将可能发生异常的的语句放在try语句块中;try语句块后有零个、一个或多个catch语句块,catch语句块指定可以捕获的异常的类型,同时包含异常处理程序;catch语句块后可能有finally语句块,无论是否发生异常都要执行的代码放在finally语句块中。形式为:
try{
//语句
}catch (异常类型 引用名) {
//语句
}finally {
//语句
}
注:发生异常时,创建特定异常类型的对象。catch语句块处理异常的类型由其参数的类型决定(小括号里的异常类型),参数中的引用名指向try语句块抛出的异常对象。
当catch参数类型为Exception类时,由于超类的引用可以指向其子类对象,catch语句块可处理任意类型的异常。当有多个异常对象时,使用运算符instanceof,可以确定引用变量是否指向特定类型的对象。
例:try{
//多个可能发生异常的语句
}catch (Exception e ) {
if ( e instanceof 具体异常类型1 )
//异常处理语句
else if ( e instanceof 具体异常类型2)
//异常处理语句
......
}
(2)、throws
throws用在方法的声明后,用来声明方法中可能抛出的的所有异常。throws后面跟异常类名。
例:public void mathod ( ) throws Exception {
.........
}重生之大文豪www.dwhao.com
(3)、throw
throw在方法体中使用,用来抛出一个具体的异常,其后跟一个异常对象或引用。
通过throw抛出异常后,如果想在上一层方法中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法的声明中指明要抛出的异常类型;如果要捕捉throw抛出的异常,则必须使用try-catch语句。
(4)、创建自定义的异常类
Java允许用户创建自己的异常类,用来处理Java异常类未包含或则处理自定义的异常。