W jednym z projektów nastąpił pewien przewrót i zmuszony byłem logować wyrzucane wyjątki. Każdy z nich jest w tym projekcie przekazywany „do góry”. Końcowym klientem wyjątków (twór, który jako ostatni dostaje wyjątki) jest JSF.

Natura JSF jest taka, że nie pokazuje stosu wywołań!

Podczas pisania kodu logującego wyjątki, natrafiłem na ciekawy fakt.

Trudno było początkowo mi stwierdzić jakiego typu wyjątek w danym kodzie metody może być wyrzucony.

Akurat by to stwierdzić wiele nie trzeba. Jeśli używasz IDE NetBeans, to on sam będzie podkreślał na czerwono, gdzie jest wyrzucany wyjątek. W podpowiedziach powinien pokazywać jakiego typu wyjątek może być wyrzucony. Zatem, jeśli żadna z metod w kodzie nie będzie rzucać wyjątkiem, IDE nie będzie wymagać obsługi wyjątków.

Co zatem zrobić, jeśli nie ma widocznych sugestii? Skoro chcemy logować każdy wyjątek, to co wtedy?

Rozwiązanie jest proste. Zawsze jest wyrzucany wyjątek RuntimeException, zatem taki typ powinien być przechwytywany do logowania.

Oczywiście nie można zapomnieć o przekazywaniu wyjątków wyżej, czyli zalogować go i rzucić dokładnie tym samym wyjątkiem. A jeśli wyjątek jest obsługiwany, to nie trzeba go przekazywać wyżej 🙂

Nie wiem jak jest w innych IDE, ale myślę, że powinno być podobnie.

Jeśli coś jest nie jasne lub niedopowiedziane nie jesteś zmuszony opuszczać tego wpisu. Zadaj pytanie w komentarzu 😉