2012-07-16 8 views

Odpowiedz

8

Łapiesz wyjątek RuntimeException z tego samego powodu, dla którego przechwycono wyjątek: zamierzasz coś z nim zrobić. Być może możesz poprawić wszystko, co spowodowało wyjątek. Być może po prostu chcesz ponownie zagłębić się w inny typ wyjątku.

Złapanie i ignorowanie wyjątków jest jednak bardzo niekorzystne.

+1

Nie jestem pewien, czy naprawdę powinieneś to robić z niezaznaczonymi wyjątkami. Tak naprawdę powinny być wyrzucane tam, gdzie nie ma nic innego, co można zrobić i po prostu przedstawiają błędy w kodzie. W takim przypadku jedynym powodem, aby złapać jeden z nich jest ochrona aplikacji przed wysadzeniem (jeśli to możliwe, zrób to). –

+0

Zgadzam się, jeśli nie ma innego sposobu sprawdzania poprawności kodu, wyrzuć wyjątek! –

+0

Nie jestem pewien, co masz na myśli, sprawdzając kod? Miałem na myśli to, że jedyne wyjątki w czasie wykonywania powinny być rzucane, gdy nie ma nic, co można zrobić.Na przykład BufferOverflow, BufferUnderflow, ClassCast, ConcurrentModifications itp. Są wyjątkami w czasie wykonywania. Nie mają one nic wspólnego z weryfikowaniem kodu. Naprawdę nie możesz nic z nimi zrobić, jeśli tak się stanie, z wyjątkiem sytuacji, w których w miarę możliwości postaraj się odzyskać lub niech zginie twoja aplikacja. To zależy od tego, co robi twoja aplikacja. –

2

Oto, co mogę wymyślić.

  1. Jeśli chcesz pokazać miłą wiadomość do użytkownika końcowego w przypadku gdy coś poszło nie tak, złapać RuntimeException i zalogować się. Następnie pokaż trochę fajnej wiadomości na ekranie zamiast błędu blastowania.
  2. zawinąć ramy konkretnego CheckedExceptions do zastosowania konkretnego RuntimeExceptions .To jest korzystne stosowanie RuntimeException jako niestandardowego wyjątkiem jak powiedział here.
-1

Tak: zawsze, gdy możesz i chcesz odzyskać od nich.

Wiele typowych wyjątków dziedziczy po RuntimeException, a każda z nich może lub nie może być odzyskana w zależności od konkretnych okoliczności. Sama klasa RuntimeException nie oznacza, że ​​wyjątek musi lub nie może zostać przechwycony.

Na przykład możesz mieć metodę biblioteki, która wyrzuca IllegalArgumentException na niektórych wejściach. Jeśli dotyczy to twojego programu, możesz złapać ten wyjątek i odzyskać w pewien sposób, na przykład próbując innego wejścia lub wyjaśniając użytkownikowi, dlaczego operacja nie może być kontynuowana.

0

Na podstawie sprawdzania poprawności użytkownika, aby wyświetlić użytkownikowi niestandardowy komunikat, należy przejść do opcji RuntimeException.

Zawiń niestandardową wiadomość, a następnie ją wyrzuć.

throw new RuntimeException("Invalid userName/Password !"); 
0

Zasadniczo tylko raz, co chcesz, aby złapać jednego jest gdy nie można pozwolić, aby aplikacja wysadzić. This is a good article opisując to w znacznie bardziej szczegółowo, ale tutaj jest to cytat, który podsumowuje:

"If a client can reasonably be expected to recover from an exception, make it a 
checked exception. If a client cannot do anything to recover from the exception, 
make it an unchecked exception". 

Od niesprawdzonych wyjątki są w zasadzie tylko błędy w kodzie oraz przez naprawdę powinien być rzucony tylko tam, gdzie nie ma nic, co można zrobić o nich, jedynym czasem, w którym chciałbyś go złapać, jest to, że nie możesz pozwolić, by twoja aplikacja się wysadziła.