异常在子父类覆盖中的体现;(看看这个,相信你就明白了)
1,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。
2,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类,当然你也可以不用抛的,你自己可以try...catch处理的话。
class AException extends Exception
{
}
class BException extends AException
{
}
class CException extends Exception
{
}
/*
Exception
|--AException
|--BException
|--CException
*/
class Fu
{
void show()throws AException
{
}
}
class Zi extends Fu
{
void show()throws AException //这里可以抛出AException或BException ,但是不能抛出CException
{
}
}
3,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
也就是说父类抛出了A,B,C,D 异常的话,那么子类只能抛出B,C,D或者是C,D...异常。
|