diff --git a/KIV PPA1/15. Výjimky.md b/KIV PPA1/15. Výjimky.md index 9529b2e..dd03b2e 100644 --- a/KIV PPA1/15. Výjimky.md +++ b/KIV PPA1/15. Výjimky.md @@ -48,7 +48,7 @@ - Všechny tyto výjimky jsou odvozeny (přímo nebo přes delší hierarchii) od ```RuntimeException``` - Není nutné se o ně v programu postarat, protože mohou nastat kdekoliv - - Příkladem je přístup do neexistujícího prvku pole (```ArrayIndexOutOfBoundException```), volání metody nad referenční proměnnou, která je ```null``` (```NullPointerException```),dělení nulou (```ArithmeticException```) a mnoho dalších + - Příkladem je přístup do neexistujícího prvku pole (```ArrayIndexOutOfBoundException```), volání metody nad referenční proměnnou, která je ```null``` (```NullPointerException```), dělení nulou (```ArithmeticException```) a mnoho dalších - Program lze přeložit – **překladač nás nenutí, abychom je ošetřili** pomocí speciální části zdrojového kódu - Považujeme-li to za vhodné, můžeme je ošetřit (stejným způsobem jako kontrolované výjimky) - Typicky je to v místech, kde je zvýšená pravděpodobnost problému (např. vstupy od uživatele) @@ -99,7 +99,8 @@ - Blok ```finally``` následuje za blokem catch - Obsahuje část kódu, která se provede vždy – ať už k výjimce dojde, nebo ne (i když dojde k jiné výjimce, která není odchycena) - Nepoužívá se příliš často -- Možné ošetření výjimky – pouze vypsání chyby a ukončení programu Primitivní, ale často rozumný způsob +- Možné ošetření výjimky – pouze vypsání chyby a ukončení programu + - Primitivní, ale často rozumný způsob - Hodí se v případech, kdy vznik výjimky znamená, že program dál stejně nemůže smysluplně pokračovat - Umožní program přeložit (pokud ošetřujeme kontrolovanou výjimku) - V případě, že je výjimka vyhozena, se o ní z chybového výpisu dozvíme @@ -190,7 +191,7 @@ - Propagování výše se provede v bloku ```catch``` příkazem ```throw``` - Výjimky jsou zachyceny blokem ```catch```, ve kterém se provede ošetření (zde není žádné potřeba) a výjimka se následně předá výše - Uzavření souboru (pokud je otevřen) se provede v bloku ```finally``` (chceme ho zavřít v každém případě, ať už výjimka vznikla nebo ne) -- Pokud potřebujeme v ošetření výjimky provést pouze uzavření souboru (a ne jinou akci), je možné (a lepší) použít konstrukci ```try```-withrerources +- Pokud potřebujeme v ošetření výjimky provést pouze uzavření souboru (a ne jinou akci), je možné (a lepší) použít konstrukci ```try```-with-resources - Bloky ```catch``` ani ```finally``` se vůbec neuvedou, ale k uzavření souboru dojde - Kvůli chybějícímu bloku ```catch``` se výjimka ani nezachytí a není tedy ani nutné znovu ji vyhazovat příkazem ```throw```