Výjimka
Výjimka (zkráceně „výjimečná událost“) je chyba nebo neočekávaná událost, ke které dojde během běhu programu. Když k výjimce dojde, přeruší tok programu. Pokud program dokáže výjimku zpracovat, může pokračovat v běhu. Pokud výjimka není ošetřena, program může být nucen se ukončit.
Výjimky podporuje více programovacích jazyků, i když se v nich používají různými způsoby. Výjimky jsou například nedílnou součástí jazyka Java a často slouží k řízení toku programu. Java obsahuje třídu Exception, která má desítky podtříd, například TimeoutException, UserException a IOException. Podtřídy jako IOException obsahují konkrétnější výjimky, například FileNotFoundException a CharacterCodingException, které mohou být „vyvolány“, pokud soubor není nalezen nebo není rozpoznáno kódování znaků řetězce.
Jiné jazyky používají výjimky pouze k zachycení zásadních chyb za běhu, například selhání při přidělování paměti nebo chyb na úrovni systému. Například program v jazyce C++ může vyvolat výjimku bad_alloc, když nelze přidělit paměť, a výjimku system_error, když operační systém vytvoří chybu.
Ošetření výjimek
Dobře napsaný počítačový program kontroluje výjimky a vhodně je ošetřuje. To znamená, že vývojář musí kontrolovat pravděpodobné výjimky a napsat kód, který je zpracuje. Pokud program výjimky dobře ošetřuje, lze neočekávané chyby zjistit a spravovat, aniž by došlo k pádu programu.
Výjimky se „vyvolávají“, když k nim dojde, a „zachycují“ je jiné části kódu programu. Lze je vyvolat explicitně pomocí příkazu throw nebo implicitně uvnitř klauzule try. Níže je uveden příklad syntaxe „try / catch“ v jazyce Java. Následující kód se pokouší dělit nulou, ale vyvolá výjimku ArithmeticException a jako výsledek vrátí hodnotu 0.
1. int a = 11;
2. int b = 0;
3. int result = 0;
4. try {
5. int c = a / b;
6. result = c;
7. } catch(ArithmeticException ex) {
8. result = 0;
9. }
10. return result;
Výjimka je vyvolána na řádku 5 (když se číslo 11 dělí nulou), takže zbývající část příkazu try (řádek 6) se neprovede. Místo toho je výjimka zachycena na řádku 7 a je vrácen výsledek 0.
Otestujte své znalosti