子类不能超级类的父异常

时间:2014-10-11 07:11:31

标签: java exception method-overriding

我读过Subclass方法不能超类方法的父异常。在异常层次结构中,ArithmeticException是从RuntimeException派生的吗?所以下面的代码应该给出编译错误。但它没有给予..可以告诉我为什么?

class Cafe
{
    void f() throws ArithmeticException{
        throw new ArithmeticException();
    }
}
class Coffee extends Cafe
{
    void f() throws RuntimeException{
        System.out.println("hi");
    }

    public static void main(String[] args)throws ArithmeticException{
        Cafe c=new Cafe();
        c.f();

    }
}

2 个答案:

答案 0 :(得分:1)

方法覆盖规则仅适用于已检查的例外而非Runtime例外。原因是您可以随时抛出任何RuntimeException并且编译器不会强制您处理它或在方法签名中声明throws子句。

答案 1 :(得分:0)

因为RuntimeException及其子类是未经检查的异常。没有必要在投掷条款中提及它们。