Zpracování výjimek Java (s příklady)

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.

Zajímavé články...