2012-02-21 12 views
17

Czy jest możliwe utworzenie własnego niezaznaczonego wyjątku w Javie?Czy jest możliwe utworzenie własnego niezaznaczonego wyjątku w Javie?

Zasadniczo chciałbym

  • mieć własną klasę wyjątku, MyUncheckedException
  • To nie czyni mnie zaktualizować wszystkie metody, które wywołują metodę, która rzuca ten wyjątek z powodzią własnej throws
+0

Po prostu należy pamiętać, że dodanie nowych wyjątków do istniejącego kodu w zasadzie łamie zgodność z wcześniejszymi wersjami interfejsu API. Oczywiście, jeśli dodasz tylko RuntimeExceptions, jest on nadal kompatybilny z binariami, ale osobiście uważam, że jest jeszcze gorzej: nieświadomi ludzie będą teraz łączyć się z nową wersją i nagle dostaną dziwne błędy .. ugh. – Voo

Odpowiedz

29

Tak. Rozszerz MyUncheckedException z RuntimeException. Jednak poniżej jest wytyczna z documentation

ogólnie mówiąc, nie rzucać RuntimeException lub utwórz podklasę RuntimeException po prostu dlatego, że nie chcą być borykać się z określenia wyjątków wasze metody może rzucać .

Oto podstawowe wytyczne: Jeśli klient może w uzasadniony sposób uzyskać , który ma odzyskać dane z wyjątku, należy go zaznaczyć jako wyjątek. Jeśli klient nie może nic zrobić, aby odzyskać od wyjątku, uczynić go niezaznaczonym wyjątkiem od .

2

Myślę, że chcesz tylko podklasy RuntimeException?

4

Tak - wywodzą ją od RuntimeException

Upewnij się, że robisz to dla prawego rozumu: co do zasady, wyjątki środowiska wykonawczego wskazuje błędy programistyczne, zamiast błędów, że program może potencjalnie reagować w jakiś znaczący droga.

0

TAK. Według Effective Java -

Choć Java Language Specification nie wymaga go, istnieje silna konwencja, że ​​błędy są zarezerwowane do użytku przez JVM, aby wskazać braki zasobów, niezmienne awarie lub inne warunki, które czynią go niemożliwe do kontynuowania egzekucji. Biorąc pod uwagę prawie powszechną akceptację tej konwencji, najlepiej nie wdrażać żadnych nowych podklas błędów. W związku z tym wszystkie niezatwierdzone tharkibles należy wdrożyć klasy RuntimeException (bezpośrednio lub pośrednio).

Poniżej użytkowania nierejestrowanego wyjątkiem zaleca się: -

  1. wyjątki Wykorzystanie środowiska wykonawczego w celu wskazania błędów programowania.
  2. Jeśli uważasz, że warunek może umożliwić odzyskanie, użyj sprawdzonego wyjątku; jeśli nie, użyj wyjątku środowiska wykonawczego. Jeśli nie jest jasne, czy odzyskiwanie jest możliwe, prawdopodobnie lepiej jest użyć niesprawdzonego wyjątku.

O dokumentowania niesprawdzony wyjątek -

Użyj tag Javadoc @throws udokumentować każde niezaznaczone wyjątek że metoda może rzucać, ale nie używać rzuca słów kluczowych w celu niezaznaczone wyjątków w metodzie deklaracja.

Powiązane problemy