Ogólnie istnieją dwa sposoby postępowania z wyjątkami w Javie.Dlaczego wyjątek RuntimeException nie wymaga jawnej obsługi wyjątku?
- dodawania rzuca oświadczenie podpisu metody
- Surround z bloku try/catch.
Jednak zauważyłem, że niektóre wyjątki, szczególnie te, które dziedziczą po RuntimeException
, nie wymagają tak jawnej obsługi wyjątku.
Na przykład, stworzyłem metodę próbkowania jak poniżej i napisem „Nie konieczne” dla tych, które nie wymagają wyraźnej obsługę wyjątków.
public void textException(){
int i = (new Random()).nextInt(100);
switch (i){
case 1:
throw new NullPointerException(); //Not required
case 2:
throw new NumberFormatException(); //Not required
case 3:
throw new RuntimeException(); //Not required
case 4:
throw new ClassNotFoundException(); //Required
case 5:
throw new IOException(); //Required
case 6:
throw new Exception(); //Required
default:
return;
}
}
zauważyłem, że RuntimeException
dziedziczy z Exception
.
Dlaczego nie trzeba jednoznacznie przechwytywać kodu RuntimeException
, a inne Exceptions
zrobić?
Ci nazywane są sprawdzone i niekontrolowany wyjątki w Javie. A te były omawiane wiele razy w SO spojrzeć http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation –
Metoda nie jest wymagane, aby zadeklarować w jego rzutów klauzula żadnych podklasy RuntimeException które mogły zostać rzucone podczas wykonywania metody, ale nie zostały przechwycone. – sudmong