标签:
/* Exception中有一个特殊的子类异常RunTimeException运行时异常。 如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。 如果在函数上声明了该异常。嗲用着可以不要进行处理。编译一样通过。 之所以不用在函数声明,是因为不需要让调用者处理。 当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修改。 自定义异常时,如该异常的发生,无法再继续进行运算,就让自定义异常继承RunTimeException。运行时异常,会引发程序停止。 所以在自定义异常时,要么继承RuntimeException,要么继承Exception。 总结: 对于异常分两种情况: 1,编译时被检测的异常:(针对可以处理的异常)即非运行时异常,在编译时就会检测出其异常。 这时不仅要在函数上进行声明(告诉调用者此函数会出现异常,让调用者抛出或解决此异常), 而且还要在调用该函数的函数内部做出相应的处理动作,要么也在函数上抛出,要么try...catch捕获异常。 2,编译时不被检测的异常:(针对无法进行处理的异常,只能让程序停下来,并且修改代码才能解决的异常)(运行时异常。RuntimeException及其子类。) */ class FuShuException extends RuntimeException { FuShuException(String msg) { super(msg); } } class Demo { int div(int a,int b)// throws ArithmeticException //当有函数调用div()函数时,要么继续向上抛出异常,即抛给虚拟机。要么捕获异常,对异常进行处理。 { //而继承了RuntimeException运行时异常的异常不用在函数上声明,也能编译通过,这是运行时异常的特点. if(b==0) throw new ArithmeticException(); return a/b; } } class ExceptionDemo2 { public static void main(String[] args) //throws ArithmeticException ——此做法是将函数抛出的异常继续抛出,抛给虚拟机进行处理。 { Demo d=new Demo(); /* try { int x=d.div(4,0); System.out.println("x="+x); } catch (ArithmeticException e)//捕获函数抛出的异常并对异常进行处理。 { System.out.println(e.toString()); } */ int x=d.div(4,0); System.out.println("x="+x); System.out.println("Hello World!"); } }
标签:
原文地址:http://blog.csdn.net/iemdm1110/article/details/51360983