Výjimky v Javě

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Založení stránky.)
 
(Vytvořen obsah stránky.)
Řádka 1: Řádka 1:
 
[[Category:VSE]][[Category:Informatika]][[Category:Java]]
 
[[Category:VSE]][[Category:Informatika]][[Category:Java]]
  
... Text stránky bude doplněn...
+
 
 +
== Co jsou výjimky? ==
 +
* V každém programu mohou za určitých okolností nastávat chyby, které programátor může předvídat, ale kterým nelze obecně zabránit.
 +
* Typicky takové chyby nastávají:
 +
*# při práci se soubory (chybějící soubor, poškozené médium, odpojené médium, uživatel špatně zadal název souboru,...)
 +
*# při práci se sítí (nelze se připojit, připojení bylo přerušeno v průběhu komunikace,...)
 +
*# při zpracovávání vstupu od uživatele (například očekáváme celé číslo, ale uživatel zadá do vstupního pole desetinné číslo)
 +
 
 +
* Pokud bychom museli psát podmínky a testovat chyby všude, kde může potenciálně nastat problém, kód aplikace by se stal brzy nepřehledným.
 +
* Většina moderních programovacích jazyků proto zavádí koncept tzv. ''výjimek''.
 +
* Zjednodušeně to funguje tak, že označíme blok, kde může nastat chyba, a ošetření chyby (správná reakce na chybu) uvedeme až na konec tohoto bloku.
 +
 
 +
<div class="Poznamka">
 +
Ještě jednou pro ujasnění:
 +
* Neřešíme teď situaci, kdy je aplikace špatně naprogramovaná!
 +
* Aplikace je správně napsaná, ale problém nastane v&nbsp;něčem, co programátor nemůže dopředu ovlivnit.
 +
* Například výpadek sítě při komunikaci přes síť. Takové chyby lze '''předvídat''' a&nbsp;můžeme do aplikace zabudovat vhodnou reakci na takovou chybu. Ale '''nelze zajistit, aby taková chyba nenastala.'''
 +
</div>
 +
 
 +
 
 +
 
 +
== Jak výjimky fungují? ==
 +
* Pokud víme, že v&nbsp;nějaké části kódu aplikace může nastat chyba, kterou lze předvídat, ale nelze ji vyloučit, potom:
 +
# Označíme blok kódu, kde chyba může nastat:<br /><code>try { </code> ... <code> } </code>
 +
# Následně zapíšeme kód bez toho, abychom museli neustále testovat chyby
 +
#* Kód tedy může tedy zůstat přehledný a&nbsp;stručný, bez spousty podmínek.
 +
#* Pokud chyba nastane, zbytek bloku kódu se přeskočí a&nbsp;ihned se provede reakce na chybu (viz další krok).
 +
# Poté popíšeme, jak zareagovat na jednotlivé typy chyb (jak zareagovat na výjimky):<br /> <code>catch (''TypVýjimky'' ''názevVýjimky'') { </code> ... jak zareagovat ... <code> } </code>
 +
# A&nbsp;nakonec můžeme uvést kód, který se má provést každopádně:<br /> <code> finally { </code> ... Co se má stát vždy na konci bloku ... <code> } </code>
 +
 
 +
; Šablona kódu:
 +
'''try''' { ''// Začni provádět kód, ve kterém může nastat chybový stav...''
 +
 +
    ''... zde následuje kód, pracující se souborem...''
 +
 +
} '''catch''' (''TypVýjimky1'' ex) {
 +
 +
    ''// Co se má stát, pokud nastane chyba TypVýjimky1...''
 +
 +
} '''catch''' (''TypVýjimky2'' ex) {
 +
 +
    ''// Co se má stát, pokud nastane chyba TypVýjimky2...''
 +
 +
} '''finally''' {
 +
 +
    ''// Co se má stát každopádně po skončení bloku...''
 +
    ''// Provede se i tehdy, kdy nastane neočekávaná chyba.
 +
 +
}
 +
 
 +
 
 +
 
 +
== Příklad &mdash; práce se souborem ==
 +
 
 +
 
  
 
== Související stránky ==
 
== Související stránky ==
 
* [[Práce se soubory v Javě]]
 
* [[Práce se soubory v Javě]]
 
* [[Java: Textový vstup a výstup]]
 
* [[Java: Textový vstup a výstup]]
 +
 +
  
 
== Zdroje ==
 
== Zdroje ==
 
* [https://www.tutorialspoint.com/java/java_exceptions.htm TutorialsPoint.com &rarr; Java Exceptions]
 
* [https://www.tutorialspoint.com/java/java_exceptions.htm TutorialsPoint.com &rarr; Java Exceptions]
 +
* [https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html Java Documentation &rarr; Exceptions]

Verze z 14. 4. 2020, 12:47


Obsah

Co jsou výjimky?

Ještě jednou pro ujasnění:

  • Neřešíme teď situaci, kdy je aplikace špatně naprogramovaná!
  • Aplikace je správně napsaná, ale problém nastane v něčem, co programátor nemůže dopředu ovlivnit.
  • Například výpadek sítě při komunikaci přes síť. Takové chyby lze předvídat a můžeme do aplikace zabudovat vhodnou reakci na takovou chybu. Ale nelze zajistit, aby taková chyba nenastala.


Jak výjimky fungují?

  1. Označíme blok kódu, kde chyba může nastat:
    try { ... }
  2. Následně zapíšeme kód bez toho, abychom museli neustále testovat chyby
    • Kód tedy může tedy zůstat přehledný a stručný, bez spousty podmínek.
    • Pokud chyba nastane, zbytek bloku kódu se přeskočí a ihned se provede reakce na chybu (viz další krok).
  3. Poté popíšeme, jak zareagovat na jednotlivé typy chyb (jak zareagovat na výjimky):
    catch (TypVýjimky názevVýjimky) { ... jak zareagovat ... }
  4. A nakonec můžeme uvést kód, který se má provést každopádně:
    finally { ... Co se má stát vždy na konci bloku ... }
Šablona kódu
try { // Začni provádět kód, ve kterém může nastat chybový stav...

    ... zde následuje kód, pracující se souborem...

} catch (TypVýjimky1 ex) { 

    // Co se má stát, pokud nastane chyba TypVýjimky1...

} catch (TypVýjimky2 ex) { 

    // Co se má stát, pokud nastane chyba TypVýjimky2...

} finally {

    // Co se má stát každopádně po skončení bloku...
    // Provede se i tehdy, kdy nastane neočekávaná chyba.

}


Příklad — práce se souborem

Související stránky


Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje