Java a checked exceptions

Jedno z programátorských témat, které mě zaujalo už před pár měsíci, jsou checked exceptions. Tedy povinnost metod ve své signatuře uvádět všechny vyjímky, které z nich mohou být vyvolány. To umožňuje striktní kontrolu jejich zpracovávání už při kompilaci programu, ale zároveň to programátory dost svazuje. Od doby, co Java checked exceptions zpopularizovala, se tak vedou nekonečné debaty o tom, zda to byla správná cesta.

Před pár dny přibyl další článek o checked exceptions do sbírky – rovnou od IBM. Nepřináší moc nového, spíše shrnuje současné převládající názory na problém. Ale na konci je docela hezká sbírka zajímavých odkazů.

Osobně se mi idea checked exceptions líbí a v praxi se mi zatím jeví jako užitečná, aspoň při mých nevinných hrátkách s Javou. Nutí mě totiž promyslet si pořádně zpracování chyb v programu, což jsem vždycky trochu odbýval.

Velmi dobře ale dovedu pochopit argumenty proti, zejména ten, že checked exceptions jsou nebezpečné z hlediska stability rozhraní tříd. Jakmile totiž někde zveřejníte třídu s metodami včetně deklarace vyvolávaných vyjímek, už můžete jen těžko změnit signatury metod této třídy (zejména pokud píšete knihovnu, využívanou ve více programech). Ale co když pak potřebujete změnit implementaci metody a díky tomu bude metoda potřebovat "ventilovat" ven další typ vyjímky? V tu chvíli prostě musíte signaturu upravit a to (pokud si to vůbec můžete dovolit) přináší samozřejmě spoustu práce navíc v každém místě, kde se metoda volá. A těch můžou být tisíce. To může být obrovský problém při vývoji větších systémů.

Hlasy proti checked exceptions mají tedy rozhodně svou váhu. A jako obvykle se ukazuje, že svět rozhodně není černobílý, ale plný kompromisů a ústupků na jednu nebo druhou stranu.

P.S.: Pokud sem náhodou zabloudil nějaký odborník na Javu, mohl by se podělit o "oficiální" český překlad výrazu checked exception? Bohužel teď nemám po ruce žádnou literaturu, do které bych se podíval, Google moc nepomohl a kontrolovaná vyjímka mi přijde trochu moc otrocké. Ale nic lepšího mě nenapadá.

P.P.S.: Na úplný závěr malé lákadlo: S příspěvky na téma Java v mém zápisníku asi ještě několikrát setkáte. Píšu totiž v Javě zápočťák do školy a už jsem si při tom udělal tolik poznámek, že to vystačí aspoň na dva články. Ale napíšu je (pokud vůbec) až když budu mít hotovo. Nejdřív práce, potom zábava :-)