假设:
class ExceptionA extends Exception
{}
class ExceptionB extends ExceptionA
{}
class ExceptionC extends Exception
{}
结构如下:
Exception
--ExceptionA
--ExceptionB
--ExceptionC
1.一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或异常的子类。
class Fu
{
void show() throws ExceptionA
{}
}
class Zi extends Fu
{
void show() throws ExceptionA//也可以抛B,但不可以抛C
{}
}
2.如果父类扔出多个异常,那么重写(覆盖)方法必须扔出那些异常的一个子集,也就是说不能扔出新的异常。
class Fu
{
void show() throws ExceptionA,ExceptionC
{}
}
class Zi extends Fu
{
//以下可以抛(A和C)或者(A)或者(C)或者(B,C)或者(B)或者(什么也不抛),除了A、C以及他们子类 以外的就不能抛
void show() throws ExceptionA,ExceptionC
{}
}