1、检查性异常:编译时会发现的异常。自定义检查性异常要继承Excepiton。
2、非检查性异常:运行时产生的异常。RuntimeExcepiton及其子类,自定义非检查性异常要继承RuntimeExcepiton。
3、捕获异常:如果有可能的异常产生,一般编译器会自己给你加上try/catch框的。
try{ //可能产生异常的语句 }catch(Exception e){ //捕获异常之后,对异常的操作 }finally{ //异常操作玩,必须要执行的语句,比如关闭IO什么的 }
4、finally:不是必须的。一般先执行catch里面的语句,再执行finially。如果catch里面第一句话是return,那么先执行finally。
5、throws:如果一个函数会抛出检查性异常,那么需要在声明的时候加上throws声明要抛出的异常,用于在外部捕获和处理。
6、throw:直接抛出一个异常。
package exceptionTest; public class main { public static void main(String args[]){ int a[] = new int[2]; a[0]=1; a[1]=2; //简单的捕获异常,以及使用异常对象的方法 try{ System.out.println(a[3]); }catch(Exception e){ System.out.println(e); }finally{ System.out.println("异常!"); } //外部处理test内部抛出的异常 try { test(); } catch (Exception e) { System.out.println(e); } } static class myException extends Exception{ public myException(){ super(); } public String toString(){ return "myException"; } } //如果一个函数可能会抛出 检查性 异常,必须用throws声明 //静态方法里面使用静态内部类 public static void test() throws Exception{ myException e = new myException(); throw e; } }