标签:
/*
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