From 937aca55ba1d260e957acdb54432ff245f1b8a05 Mon Sep 17 00:00:00 2001 From: Filip Znachor Date: Wed, 21 Dec 2022 17:11:36 +0100 Subject: [PATCH] =?UTF-8?q?Oprava=2015.=20=C4=8D=C3=A1sti=20PPA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KIV PPA1/15. Výjimky.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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```