V tomto tutoriálu se pomocí příkladů seznámíme s různými přístupy ke zpracování výjimek v Javě.
V posledním kurzu jsme se dozvěděli o výjimkách Java. Víme, že výjimky abnormálně ukončují provádění programu.
Proto je důležité vyřizovat výjimky. Zde je seznam různých přístupů ke zpracování výjimek v Javě.
- zkuste … chytit blok
- konečně zablokovat
- házet a házet klíčové slovo
1. Java vyzkoušet … chytit blok
Blok try-catch se používá ke zpracování výjimek v Javě. Zde je syntaxe try… catchbloku:
try ( // code ) catch(Exception e) ( // code )
Tady jsme umístili kód, který by mohl generovat výjimku uvnitř trybloku. Po každém trybloku následuje catchblok.
Když dojde k výjimce, je chycena catchblokem. catchBlok nelze použít bez trybloku.
Příklad: Zpracování výjimek pomocí try… catch
class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )
Výstup
ArithmeticException => / o nulu
V příkladu se snažíme číslo vydělit 0. Zde tento kód generuje výjimku.
Abychom zvládli výjimku, vložili jsme kód 5 / 0do trybloku. Když nyní dojde k výjimce, zbytek kódu uvnitř trybloku se přeskočí.
catchBlok chytí se provádí výjimka a příkazy uvnitř bloku catch.
Pokud žádný z příkazů v trybloku nevygeneruje výjimku, catchblok se přeskočí.
2. Java konečně blokuje
V Javě se finallyblok vždy provede bez ohledu na to, zda existuje výjimka nebo ne.
finallyBlok je volitelné. A pro každý tryblok může existovat pouze jeden finallyblok.
Základní syntaxe finallybloku je:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Pokud dojde k výjimce, finallyblok se provede po try… catchbloku. Jinak se provede po bloku try. Pro každý tryblok může být pouze jeden finallyblok.
Příklad: Zpracování výjimek Java pomocí bloku finally
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
Výstup
ArithmeticException => / by zero Toto je konečný blok
Ve výše uvedeném příkladu vydělíme číslo 0 uvnitř trybloku. Zde tento kód generuje ArithmeticException.
Výjimku zachycuje catchblok. A pak je finallyblok proveden.
Poznámka : Je dobrým zvykem používat finallyblok. Je to proto, že může obsahovat důležité kódy čištění, jako například
- kód, který může být omylem přeskočen návratem, pokračováním nebo zlomením
- uzavření souboru nebo připojení
3. Klíčové slovo Java throw and throws
throwKlíčové slovo Java se používá k výslovnému vyvolání jedné výjimky.
Když uděláme throwvýjimku, tok programu se přesune z trybloku do catchbloku.
Příklad: Zpracování výjimek pomocí vyvolání Java
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Výstup
Výjimka ve vlákně "main" java.lang.ArithmeticException: Pokus o dělení 0 na Main.divideByZero (Main.java:5) na Main.main (Main.java:9)
Ve výše uvedeném příkladu explicitně házíme ArithmeticExceptionpomocí throwklíčového slova.
Podobně se throwsklíčové slovo používá k deklaraci typu výjimek, ke kterým může dojít v rámci metody. Používá se v deklaraci metody.
Příklad: Java hodí klíčové slovo
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )
Výstup
java.io.FileNotFoundException: test.txt (Systém nemůže najít zadaný soubor)
Když spustíme tento program, pokud soubor test.txt neexistuje, FileInputStreamhodí a FileNotFoundExceptionkterý rozšiřuje IOExceptiontřídu.
findFile()Metoda určuje, že IOExceptionmůže být vyvolána. main()Metoda volá tuto metodu a zpracovává výjimku, pokud je vyvolána.
Pokud metoda nezpracovává výjimky, musí být v throwsklauzuli uveden typ výjimek, které se v ní mohou vyskytnout .
Chcete-li se dozvědět více, navštivte stránky Java throw and throws.








