Spracovanie výnimiek Java (s príkladmi)

V tutoriáli sa pomocou príkladov dozvieme o rôznych prístupoch pri spracovávaní výnimiek v Jave.

V minulom návode sme sa dozvedeli o výnimkách Java. Vieme, že výnimky abnormálne ukončujú vykonávanie programu.

Preto je dôležité zaobchádzať s výnimkami. Tu je zoznam rôznych prístupov k spracovaniu výnimiek v Jave.

  • skúste … chytiť blok
  • konečne zablokovať
  • kľúčové slovo vrhať a vrhá

1. Skúste Java … chytiť blok

Blok try-catch sa používa na spracovanie výnimiek v Jave. Tu je syntax try… catchbloku:

 try ( // code ) catch(Exception e) ( // code )

Tu sme umiestnili kód, ktorý by mohol vygenerovať výnimku, do trybloku. Za každým tryblokom nasleduje catchblok.

Keď dôjde k výnimke, zachytí ju catchblok. catchBlok nemožno použiť bez trybloku.

Príklad: Spracovanie výnimiek pomocou 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ýkon

 ArithmeticException => / o nulu

V príklade sa snažíme vydeliť číslo 0. Tu tento kód generuje výnimku.

Aby sme zvládli výnimku, umiestnili sme kód 5 / 0do trybloku. Teraz, keď dôjde k výnimke, trysa preskočí zvyšok kódu vo vnútri bloku.

catchBlok chytí sa vykonáva výnimka a príkazy vnútri bloku catch.

Ak žiadny z príkazov v trybloku nevygeneruje výnimku, catchblok sa preskočí.

2. Java konečne blokuje

V Jave sa finallyblok vždy vykoná bez ohľadu na to, či existuje výnimka alebo nie.

finallyBlok je voliteľné. A pre každý tryblok môže byť iba jeden finallyblok.

Základná syntax finallybloku je:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Ak dôjde k výnimke, finallyblok sa vykoná po try… catchbloku. V opačnom prípade sa vykoná po bloku try. Pre každý tryblok môže byť iba jeden finallyblok.

Príklad: Spracovanie výnimiek Java pomocou bloku konečne

 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ýkon

 ArithmeticException => / o nulu Toto je konečne blok

Vo vyššie uvedenom príklade vydelíme číslo 0 vo vnútri trybloku. Tu tento kód generuje ArithmeticException.

Výnimku vystihuje catchblok. A potom sa finallyblok vykoná.

Poznámka : Je dobrým zvykom používať finallyblok. Je to preto, lebo môže obsahovať dôležité kódy čistenia, ako napríklad

  • kód, ktorý je možné omylom preskočiť vrátením, pokračovaním alebo zlomením
  • ukončenie súboru alebo pripojenia

3. Kľúčové slovo Java throw and throws

throwKľúčové slovo Java sa používa na výslovné použitie jednej výnimky.

Keď sme throwvýnimkou, tok programu sa posúva z trybloku do catchbloku.

Príklad: Spracovanie výnimiek pomocou príkazu 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ýkon

 Výnimka vo vlákne „main“ java.lang.ArithmeticException: Pokus o rozdelenie 0 na Main.divideByZero (Main.java:5) na Main.main (Main.java:9)

Vo vyššie uvedenom príklade výslovne vrháme ArithmeticExceptionpoužitie throwkľúčového slova.

Podobne sa throwskľúčové slovo používa na deklarovanie typu výnimiek, ktoré sa môžu v rámci metódy vyskytnúť. Používa sa v deklarácii metódy.

Príklad: Java hodí kľúč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ýkon

 java.io.FileNotFoundException: test.txt (systém nemôže nájsť zadaný súbor)

Keď spustíme tento program, ak súbor test.txt neexistuje, FileInputStreamhodí znak, FileNotFoundExceptionktorý rozširuje IOExceptiontriedu.

findFile()Metóda určuje, že IOExceptionmôže byť vyvolaná. main()Metóda volá túto metódu a spracováva výnimku, ak je vyvolaná.

Ak metóda nespracováva výnimky, musí byť v throwsdoložke uvedený typ výnimiek, ktoré sa v nej môžu vyskytnúť .

Ak sa chcete dozvedieť viac, navštívte stránku Java throws a throws.

Zaujímavé články...