繁体   English   中英

是否有可能违反规则:如果超类方法声明了异常,则子类重写方法无法声明父异常?

[英]Is it possible to break the rule: If the super class method declares an exception then subclass overridden method cannot declare parent exception?

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

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

有没有可能实现我的意图

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

还是我做错了什么?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM