Wyjatek w wyjatku

Wyjatek w wyjatku
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
chciałem się zapytać co robicie w sytuacji kiedy

Kopiuj
try{
//kod powodujacy wyjatek

}catch(Exception e){
//obsluga wyjatku tez powoduje wyjatek

}

Zwracacie wtedy wyjatek z obslugi wyjatku, wyjatek peirwszy(z sekcji try catch), czy oba??

Pozdrawiam

  • Rejestracja: dni
  • Ostatnio: dni
0

Ja zazwyczaj niczego nie zwracam, tylko obsługuję ten wyjątek w wyjatku.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
0

Loguje się wszystko co się wysypało. Na przykład jakaś operacja spowodowała IOException. Przechwytujesz wyjątek i w trakcie obsługi dostajesz SecurityException. Jeżeli zalogujesz oba to można określić czy problem nie lezy gdzieś głębiej.

  • Rejestracja: dni
  • Ostatnio: dni
0

Jesli zwracasz, to lepiej pierwszy - przeciez on byl pierwszym problemem, ktory wystapil. Zwrocenie drugiego odciagnie uwage od poczatokwego problemu. Np. dostajesz IOException, w catch (chociaz powinno to byc raczej w finally) dajesz close, i on rowniez rzuca wyjatek. Gdy zwrocisz wyzej ten z close, pominiesz calkowicie pierwszy ioexception, a raczej nie powinienes.

VG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 79
0

Jezeli mi sie zdarza wyrzucac kolejny wyjatek w seksji catch, przechwycony takze podaje, jako przyczyne. W ten sposob nic sie nie gubi. Wyjatki maja do tego odpowiedni konstruktor: Exception(Throwable cause)

Kopiuj
try
	{
	//[..]
	}
catch (JakisWyjatekException e)
	{
	//obsluga mozliwych do rozwiazania sytuacji
	//[...]
	//sytuacja, ktora nie moze byc rozwiazana -> przekazanie dalej
	throw new InnyWyjatekException(e);
	}
procoder
  • Rejestracja: dni
  • Ostatnio: dni
0

Ja robię tak samo jak VGT, tzn podaje przyczynę wystąpienia kolejnego wyjątku. Chciałbym tylko zauwazyć, że czasami, gdy nie mamy przeciążonego konstruktora Exception(Throwable cause), szczególnie jak tworzymy własne wyjątki wygodniej jest posłużyć się metodą initCause(Throwable cause).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.