因此,当我们谈论Java异常规则时,我完全理解该规则:
如果超类方法声明异常,则子类重写方法无法声明父异常(对于检查的异常)
但是我有以下问题:
public class BaseException extends Exception
{
public BaseException(String s)
{
super(s);
}
}
public class ClassExtendsExceptionChildOne extends BaseException
{
public ClassExtendsExceptionChildOne(String s)
{
super(s);
}
}
我必须使用上述自定义异常在这两个类中实现以下结果:
public abstract class MyClass
{
public abstract void abstractMethod2() throws ClassExtendsExceptionChildOne;
}
public class ChildClassOne extends MyClass
{
@Override
public void abstractMethod2() throws BaseException{}
}
我知道我违反了例外覆盖规则之一,但是是否有可能实现我的意图,或者我做错了什么?
最佳答案
有没有可能实现我的意图
可能,但是这是黑客行为,很可能引起混乱。我强烈建议您避免将此作为设计原则。
还是我做错了什么?
一旦确定了超类中的方法可以引发哪些检查异常,子类就应该尊重这一点,并且不要抛出其他检查异常,否则任何调用该子类方法的人都会大吃一惊。