2014-10-11 2 views
1

Я прочитал, что метод Subclass can not имеет родительское исключение из метода суперкласса. В иерархии исключений исключение 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(); 

    } 
} 

ответ

1

Метод главенствующих правила для проверяется только в исключительных случаях и не Runtime исключения only.The причина заключается в том, что вы можете бросить любой RuntimeException в любое время и компилятор не заставит вас справиться с этим или объявить броски пункта в вашей сигнатуре метода.

0

Потому что RuntimeException и его подклассы являются неотмеченными исключениями. Нет необходимости упоминать их в броской статье.