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.








