JE_47 - Neignorujte výjimky

Třebaže se může tato rada zdát samozřejmou, porušuje se tak často, že si zasluhuje zopakování. Když návrháři API deklarují, že nějaká metoda vyvolává určitou výjimku, pak se vám snaží něco sdělit. Neignorujte to! Je snadné ignorovat výjimky uzavřením volání metody do příkazu try s prázdným blokem catch:

// Prázdný blok catch ignoruje výjimku - velmi podezřelé!
try {
	. . . 
} catch (SomeException e) {
}

Prázdný blok catch popírá smysl výjimek, kterým je přinutit vás ke zpracování výjimečného stavu. Ignorování výjimky je analogické k ignorování požárního poplachu - a jeho vypnutí, aby se náhodou někdo nepokusil zjistit, zda opravdu hoří. To vám může projít, ale důsledky mohou být také katastrofální. Kdykoli spatříte prázdný blok catch, měl by vám v hlavě zaznít poplach. Blok catch by měl přinejmenším obsahovat nějaký komentář vysvětlující, proč je vhodné ignorovat tuto výjimku.

Příkladem typ situace, kdy může být vhodné ignorovat výjimku, je renderování obrazu při animaci. Pokud se obrazovka obnovuje v pravidelných intervalech, pak může být nejlepší zpracovat dočasné selhání tak, že jej budete ignorovat a počkáte na další obnovení.

Doporučení v této radě platí stejně pro kontrolované i nekontrolované výjimky. Ať už výjimka představuje předpověditelný stav nebo programovací chybu, její ignorování prázdným blokem catch bude mít za následek program, který tiše pokračuje i po chybě. Takový program pak může selhat kdykoli v budoucnosti v místě kódu, které vůbec nemusí souviset se zdrojem problému. �ádné zpracování výjimey může bezpečně zabránit selhání programu. I jen pouhé postoupení nekontrolované výjimky směrem ven způsobí, že progra selže rychle a že zůstanou zachované informace, které lze využít k odahlení selhání.