一.定义
异常是正常情况以外的事件,具有不确定性。
二.异常分类
注:Exception是所有异常类的祖先类,Error是所有错误类的祖先类。两者区别:error不是程序需要捕获和进行处理的。
Exception分为运行时异常,非运行时异常:
运行时异常:
1.数学异常
2.空指针异常
3.类型转换异常
4.数组下标越界异常
5.....
三.异常处理
1.隐式声明抛出
try{易出现错误的代码} catch{抓取异常,作出处理} catch{}...finally{} 语句
注:try语句不能缺省;catch语句可以有多个(如果存在多个catch语句,父类的异常要在最后被抓取);finally语句一定会被执行。
重写方法不能抛出比被重写方法范围更大的编译时异常
理解:在多态情况下,编译时处理的是父类声明的异常类型,但是运行时可能调用子类的重写方法,子类如果抛出更大的异常,父类声明的异常将会失效。
2.显示声明抛出
throws关键字:在一个方法的参数列表后面使用throws 异常类型(可多个),进行异常抛出
四.实例
1 public class TestException { 2 public static void main(String args[]) { 3 try{ 4 int i=10/0; 5 System.out.println(i); 6 int a[]={1,2}; 7 System.out.println(a[2]); 8 } 9 catch(ArithmeticException e){ 10 System.out.println(e.getMessage()); 11 } 12 catch(ArrayIndexOutOfBoundsException e){ 13 System.out.println(e.getMessage()); 14 } 15 finally{ 16 System.out.println("finally"); 17 } 18 } 19 }