Az oktatóanyagban példák segítségével megismerhetjük a Java-ban történő kivételkezelés különböző megközelítéseit.
Az utolsó oktatóanyagban megismerkedtünk a Java kivételekkel. Tudjuk, hogy a kivételek rendellenesen szüntetik meg a program futtatását.
Ezért fontos a kivételeket kezelni. Az alábbiakban felsoroljuk a Java-kivételek kezelésének különböző megközelítéseit.
- próbáld meg … elkapni a blokkot
- végül blokkolja
- dob és dob kulcsszó
1. Java try… catch block
A try-catch blokkot a Java-ban található kivételek kezelésére használják. Itt van a try… catchblokk szintaxisa :
try ( // code ) catch(Exception e) ( // code )
Itt elhelyeztük azt a kódot, amely kivételt generálhat a tryblokk belsejében . Minden tryblokkot egy catchblokk követ .
Kivétel esetén a catchblokk elkapja . A catchblokk nem használható a tryblokk nélkül .
Példa: Kivételkezelés try… catch segítségével
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()); ) ) )
Kimenet
ArithmeticException => / nullával
A példában megpróbálunk egy számot osztani 0. Itt ez a kód kivételt generál.
A kivétel kezeléséhez a kódot 5 / 0a tryblokkba helyeztük . Most, amikor kivétel történik, a tryblokk belsejében lévő többi kódot kihagyja.
A catchblokk elkapja a kivételt, és a fogási blokkon belüli utasítások végrehajtásra kerülnek.
Ha trya catchblokk egyik mondata sem generál kivételt, akkor a blokk kihagyásra kerül.
2. A Java végül blokkol
A Java-ban a finallyblokkot mindig végrehajtják, függetlenül attól, hogy van-e kivétel vagy sem.
A finallyblokk opcionális. És minden tryblokkhoz csak egy finallyblokk lehet.
A finallyblokk alapvető szintaxisa :
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Kivétel esetén a finallyblokk a blokk után kerül végrehajtásra try… catch. Ellenkező esetben a try blokk után kerül végrehajtásra. Minden tryblokkhoz csak egy finallyblokk lehet.
Példa: Java kivételkezelés a végső blokk használatával
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"); ) ) )
Kimenet
ArithmeticException => / nullával Ez a végső blokk
A fenti példában egy számot osztunk 0-val a tryblokkon belül . Itt ez a kód generál egy ArithmeticException.
A kivételt a catchblokk fogja el. És akkor a finallyblokk végrehajtásra kerül.
Megjegyzés : Jó gyakorlat a finallyblokk használata . Azért, mert tartalmazhat olyan fontos tisztítási kódokat, mint például
- kód, amelyet véletlenül kihagyhat a visszatérés, folytatás vagy megszakítás
- fájl vagy kapcsolat bezárása
3. Java dob és dob kulcsszó
A Java throwkulcsszóval kifejezetten egyetlen kivétel vethető be.
Amikor throwegy kivétel, az áramlás a program mozog a tryblokk a catchblokk.
Példa: Kivételek kezelése Java dobással
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Kimenet
Kivétel a "main" szálban java.lang.ArithmeticException: 0-mal próbálunk osztani a Main.divideByZero (Main.java:5) a Main.main (Main.java:9)
A fenti példában kifejezetten dobjuk ArithmeticExceptiona throwkulcsszó használatát.
Ehhez hasonlóan a throwskulcsszót használják a módszeren belül előforduló kivételek típusának deklarálására. A metódus deklarációban használják.
Példa: Java dob kulcsszót
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); ) ) )
Kimenet
java.io.FileNotFoundException: test.txt (A rendszer nem találja a megadott fájlt)
A program futtatásakor, ha a test.txt fájl nem létezik, akkor FileInputStreamdob egy, FileNotFoundExceptionamely kiterjeszti az IOExceptionosztályt.
A findFile()módszer meghatározza, hogy egy IOExceptiondobható. A main()metódus hívja ezt a módszert, és kezeli a kivételt, ha dobják.
Ha egy módszer nem kezeli a kivételeket, akkor a throwszáradékban meg kell adni a benne előforduló kivételek típusát .
További információkért látogasson el a Java dobások és dobások oldalra.








