在听张孝祥的课时遇到的问题,在异常一讲里,有这末一句话:
如果父类扔出多个异常,那末重写(覆盖)方法必须扔出那些异常的一个子集,也就是说不能扔出新的异常。
我个人对于这句话不太了解,我试了一下代码,
比如:
class Test
{
public int devide(int x,int y) throws ArithmeticException, DevideByMinusException, ZeroException
{
.....
.....
.....
}
}class SubTest extends Test
{
public int devide(int x,int y) throws ArithmeticException, DevideByMinusException, ZeroException, NullPointerException
{
......
......
......
}
}
由于他说必须扔出那些异常的一个子集,所以只能最多throws ArithmeticException, DevideByMinusException, ZeroException这三个异常或者这三个以下,那末我试了上面的代码,可是编译却没有出错,有点疑惑,请高手帮忙解答,谢谢PS:我明白应该抛出这些异常或他们的子类,不能抛出他们的父类,这个明白,可是他指的是抛出父类异常的数量以下还是这些异常数量的子类
如果父类扔出多个异常,那末重写(覆盖)方法必须扔出那些异常的一个子集,也就是说不能扔出新的异常。
我个人对于这句话不太了解,我试了一下代码,
比如:
class Test
{
public int devide(int x,int y) throws ArithmeticException, DevideByMinusException, ZeroException
{
.....
.....
.....
}
}class SubTest extends Test
{
public int devide(int x,int y) throws ArithmeticException, DevideByMinusException, ZeroException, NullPointerException
{
......
......
......
}
}
由于他说必须扔出那些异常的一个子集,所以只能最多throws ArithmeticException, DevideByMinusException, ZeroException这三个异常或者这三个以下,那末我试了上面的代码,可是编译却没有出错,有点疑惑,请高手帮忙解答,谢谢PS:我明白应该抛出这些异常或他们的子类,不能抛出他们的父类,这个明白,可是他指的是抛出父类异常的数量以下还是这些异常数量的子类
编译器检查的是所有已检查异常是否有try catch 或者 throw出来
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.NullPointerException