标签:
异常的三个种类:
异常是被一个方法抛出的对象。当一个方法被调用时这个方法被压入到内存的方法调用栈中。 当一个方法抛出异常是该方法从调用栈被弹出,同时产生的异常对象抛给了栈中的前一个方法。对异常的处理,方法有三个选择:
无论调用栈中有多少方法,程序控制流程都会继续在调用栈中向下执行。在调用栈中没一个方法要么捕获处理这个异常,要么捕获并再次抛出,或者直接什么不做让他进入下一个方法
只有Throwable类的对象能被JVM抛出。他有两个子类Exception和error。Error是所有Java错误类的父类,严重的不可恢复性。Exception是所有异常的父类,包括运行时异常和检查异常
在Java中,通常使用 try和catch关键字来捕获异常。用try/catch关键字把可能产生异常的代码包裹起来,其中的代码称为被保护代码。try{//被保护的代码}catch(异常的名称 e){//捕获块}
catch语句包含我们想要捕获的异常的类型声明。如果try块中发生异常,catch块就会对这个异常进行检查,如果异常类型和catch语句中所列出来的,那么异常对象就会被传到catch块中。简易的说就是try中发生异常时直接跳入catch中,如果正常执行,catch就不会执行。
还有一种语法try{}catch(){}finally{}
finally是最终执行的,不论前面怎样都会执行,一般用于关闭资源
在被保护的代码产生了多个不同类型的异常时,try后面都会跟随多个catch块,当产生异常时,会跳到对应的catch块中。
在catch块中,后一个异常必须与前一个异常同等级或是等级范围大于前一个异常的等级
异常处理中,除非必要,我们应当避免把语句放在受保护的代码中。尽管如此,当我们做测试是,经常会把整个程序代码放在一个可以捕获异常的大try/catch块中,这样就能避免一些不遵从异常处理或生命规则的编译错误
如果一个方法没有处理异常,那么该方法必须使用throws关键字来声明异常。关键字必须在方法的末尾public void test()throws Exception
一个方法可以抛出多个异常之间用逗号隔开
关键字:throw
我们可以用throw直接抛出一个异常throw new ArrayIndexOutOfBoundsException(5)
数组下标越界异常,无效索引5。也可以先实例化一个异常再抛出ArrayIndexOutOfBoundsException e=new ArrayIndexOutOfBoundsException(5); throw e;
ps:子类不能抛出比父类更多的异常
标签:
原文地址:http://www.cnblogs.com/yeruheqi/p/5453397.html