因此,当我们谈论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{}
}


我知道我违反了例外覆盖规则之一,但是是否有可能实现我的意图,或者我做错了什么?

最佳答案

有没有可能实现我的意图


可能,但是这是黑客行为,很可能引起混乱。我强烈建议您避免将此作为设计原则。


  还是我做错了什么?


一旦确定了超类中的方法可以引发哪些检查异常,子类就应该尊重这一点,并且不要抛出其他检查异常,否则任何调用该子类方法的人都会大吃一惊。

10-07 19:31
查看更多