/*
对检测时异常进行处理的方式:
1,不仅在函数上进行声明,而且还在函数内部进行catch,对异常进行处理解决;
2,仅在函数上进行声明,不在函数内部进行处理,此时便把异常抛给了虚拟机,在运行时还是会出现异常。
3,如果异常在函数内部解决了,就不用再函数上进行声明了。
*/
/*
异常在子父类覆盖中的体现:
1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
*/
/*
本程序中的异常:
Exception
|--FuShuException
|--SubFuShuException
|--OtherException
*/
对检测时异常进行处理的方式:
1,不仅在函数上进行声明,而且还在函数内部进行catch,对异常进行处理解决;
2,仅在函数上进行声明,不在函数内部进行处理,此时便把异常抛给了虚拟机,在运行时还是会出现异常。
3,如果异常在函数内部解决了,就不用再函数上进行声明了。
*/
/*
异常在子父类覆盖中的体现:
1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
*/
/*
本程序中的异常:
Exception
|--FuShuException
|--SubFuShuException
|--OtherException
*/
class FuShuException extends Exception
{
FuShuException(String msg)
{
super(msg);
}
}
class SubFuShuException extends FuShuException
{
SubFuShuException(String msg)
{
super(msg);
}
}
class OtherException extends Exception
{
OtherException(String msg)
{
super(msg);
}
}
class FuDemo
{
public int div(int a) throws SubFuShuException
{
if(a<0)
throw new SubFuShuException("出现了负数的情况。");
return a;
}
}
class Demo extends FuDemo
{
public int div(int a,int b) throws SubFuShuException
{
if(b<=0)
throw new SubFuShuException("出现了非正数");
return a/b;
}
}
class ExceptionDemo5
{
public static void main(String args[]) throws FuShuException
{
Demo d=new Demo();
try
{
int x=d.div(4,-1);
System.out.println(x);
}
catch (FuShuException e)
{
System.out.println(e.toString());
}
finally
{
System.out.println("over");
}
}
}