//自定义异常,必须继承父类异常,如果要定义多个异常呢,还是向下面每个自定义异常都要封装吗
//还是在一个类中定义,
class FuShuException extends Exception //
{
private int value;
FuShuException()
{
super();
}
FuShuException(String msg,int value)
{
super(msg);//调用父类方法,运行的是父类方法,再抛出异常的时候。还是从父类中调用的吗?
this.value = value;
}
public int getValue()
{
return value;
}
}
class Demo
{
int div(int a,int b)throws FuShuException//这里可不可以抛出他的父类异常,解释下
{
if(b<0)//这里b=0也不好吧
throw new FuShuException("出现了除数是负数的情况------ / by fushu",b);//
return a/b;
}
}
class ExceptionDemo3
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int x = d.div(4,-9);
System.out.println("x="+x);
}
catch (FuShuException e)
{
System.out.println(e.toString());
System.out.println("错误的负数是:"+e.getValue());
}
System.out.println("over");
}
} 作者: 周坤 时间: 2012-8-2 01:37
1.感觉自定义异常应该是提醒自身出现了某种特定异常状况,然后根据异常来解决问题。
2.抛出异常,也是要new出一个实例对象,当然自定义的异常类要从父类调用了,继承嘛
3.可以直接抛出Exception异常,因为下面抛出的throw new FuShuException("出现了除数是负数的情况------ / by fushu",b);是Exception的子类,发生了一个小异常,函数体抛出了一个大异常,系统的作用是不漏掉异常就好,多了自然没有关系。但是抛多了,后面主函数里catch就要捕获多余的异常了。
int div(int a,int b)throws FuShuException,直接抛出FuShuException,当a=0,会系统会发生的异常。不会运行到over。
而如果int div(int a,int b)throwsException,后面catch了Exception,那么当a=0时,就可以捕捉到这个异常,那么也可以运行到over。