2015-03-17 11 views
8

Połączyłem swój kod źródłowy z kodem współpracownika i zobaczyłem, że dodał wyjątek do zgłoszenia w deklaracji metody; jednak wiedziałem, że ten wyjątek nigdy nie zostanie tak naprawdę wyrzucony z tej metody.Dlaczego można zadeklarować metodę zgłaszania wielu wyjątków, nawet jeśli żaden z nich nie został zgłoszony?

Zastanawiam się, dlaczego kompilator nie ostrzegł mnie o "nie zgłoszonym wyjątku zadeklarowanym" (lub coś w tym stylu). Zdaję sobie sprawę, że możesz zadeklarować metodę wyrzucającą wyjątki N, nawet jeśli żaden z tych wyjątków nie zostanie zgłoszony przez kod w metodzie.

Dlaczego tak jest?

public void foo() throws IOException, IntrospectionException, BadStringOperationException, ... { 
    //do nothing 
} 
+0

ponieważ JVM może propagować wyjątek – OPK

Odpowiedz

13
  1. podklasy, które mogą zastąpić metodę rzut wyjątkiem, nawet jeśli nadrzędna nie.
  2. Możesz później zmienić metodę, aby wyrzucić jeden z wymienionych wyjątków, zachowując kompatybilność wsteczną.
Powiązane problemy