Výjimky jsou základním konceptem v Java programování, který ti pomáhá vyrovnat se s neočekávanými situacemi ve tvém kódu. Zatímco jsi se již naučil, jak výjimky zpracovávat, je nyní čas posunout se dál: vyhazování a definování vlastních výjimek. V této příručce ti ukážu, jak můžeš generovat výjimky ve svém kódu a vytvářet personalizované třídy výjimek, které ti pomohou učinit tvůj kód jasnějším a robustnějším.
Nejdůležitější poznatky
- Můžeš vyhazovat vlastní výjimky v Javě, abys lépe zvládal specifické chybové situace.
- Definováním vlastních tříd výjimek si můžeš usnadnit zpracování chyb tak, aby bylo přirozenější a srozumitelnější.
- Naučíš se, jak vyhazovat výjimky jak v metodách, tak pracovat s bloky try-catch.
Podrobný návod
1. Osvěžení práce s výjimkami
Na začátku je důležité si připomenout, jak vypadá práce s výjimkami v Javě. Můžeš se například vzpomenout na konstrukce try-catch, které ti umožňují zachytit chyby a na ně odpovídajícím způsobem reagovat. V předchozí lekci jsi viděl, jak se zpracovává NumberFormatException, když dojde k neplatné konverzi řetězce na číslo.
2. Výjimky ve vlastním kódu
Teď se podíváme na to, jak můžeš vyhazovat výjimky ve svém vlastním kódu. To může být obzvláště užitečné, pokud chceš definovat specifické chybové podmínky, které nejsou standardně zpracovány v Javě.

3. Vytvoření třídy pro validaci
Pojďme se podívat na příklad třídy, kterou nazveme MyValidator. Tato třída bude mít metodu, která očekává segment kódu k validaci, v našem případě PIN kód. Pokud zadaný PIN kód neodpovídá určité hodnotě, bude vyhozena výjimka.
4. Vyvolání a zachycení chyb
Uvnitř metody validateCode můžeš vytvořit if podmínku. Pokud kód neodpovídá očekávané hodnotě, vyhodíš novou výjimku, která vypadá takto: throw new Exception("Pouze 42 je odpovědí na všechny otázky.");. Přitom použiješ klíčové slovo throw, abys vytvořil výjimku.
5. Úprava podpisu metody
Abychom naznačili, že tato metoda může vyhazovat výjimku, musíme zahrnout klíčové slovo throws do podpisu metody. Tím pádem se nyní metoda jmenuje: public void validateCode(int code) throws Exception. Tímto způsobem se jasně komunikuje vyhazování výjimky a všichni volající této metody jsou povinni se s tím vypořádat.
6. Zpracování výjimek v bloku try-catch
Abychom chybu zachytili, můžeme metodu vložit do bloku try-catch. Při nastavení výjimky se provede kód v bloku catch, kde provedeš specifické řízení chyb, např. vypsáním chybového hlášení.
7. Volitelné opětovné vyhazování výjimek
Také můžeš zvážit znovu vyhazovat zachycenou výjimku, aby šla na vyšší logickou úroveň. Měl bys si však být vědom, že to má smysl pouze pokud nejsi právě v hlavní metodě, protože po bloku catch obvykle následuje žádný další kód.
8. Výhody vlastních výjimek
Největší výhodou vlastních tříd výjimek je, že jsou intuitivně pojmenovány a specifické pro daný případ použití. Místo práce s generickými výjimkami můžeš definovat specifické třídy jako NotFoundException nebo InvalidInputException. Tyto ti pomohou nejen při identifikaci chyb, ale také při ladění a údržbě tvého kódu.

Souhrn – Vyhazování a definování výjimek v Javě
Vyhazováním a definováním vlastních výjimek získáš mocný nástroj pro efektivní zpracování chyb a činění tvého kódu čitelnějším. Můžeš formulovat specifické podmínky výjimek a zlepšit logické oddělení chyb, což zvyšuje udržovatelnost tvého programu.
Často kladené otázky
Jaký je rozdíl mezi kontrolovanými a nekontrolovanými výjimkami?Kontrolované výjimky musí být zpracovány v podpisu metody, zatímco nekontrolované výjimky nemusí.
Proč bych měl vytvářet vlastní výjimky?Vlastní výjimky pomáhají s konkrétními chybovými zprávami, které se zaměřují na lepší identifikaci problémů a činění kódu čitelnějšími.
Jak vyhodím výjimku v metodě?Použiješ klíčové slovo throw, následované novou instancí výjimky.
Mám ve deklaraci metody uvést, že vyhazují výjimku?Ano, k tomu použiješ klíčové slovo throws v podpisu metody.
Co se stane, když výjimku nezpracovávám?Program se obvykle ukončí s runtime výjimkou, pokud výjimka není platná a není zpracována.