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… catch
blokk szintaxisa :
try ( // code ) catch(Exception e) ( // code )
Itt elhelyeztük azt a kódot, amely kivételt generálhat a try
blokk belsejében . Minden try
blokkot egy catch
blokk követ .
Kivétel esetén a catch
blokk elkapja . A catch
blokk nem használható a try
blokk 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 / 0
a try
blokkba helyeztük . Most, amikor kivétel történik, a try
blokk belsejében lévő többi kódot kihagyja.
A catch
blokk elkapja a kivételt, és a fogási blokkon belüli utasítások végrehajtásra kerülnek.
Ha try
a catch
blokk 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 finally
blokkot mindig végrehajtják, függetlenül attól, hogy van-e kivétel vagy sem.
A finally
blokk opcionális. És minden try
blokkhoz csak egy finally
blokk lehet.
A finally
blokk alapvető szintaxisa :
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Kivétel esetén a finally
blokk a blokk után kerül végrehajtásra try… catch
. Ellenkező esetben a try blokk után kerül végrehajtásra. Minden try
blokkhoz csak egy finally
blokk 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 try
blokkon belül . Itt ez a kód generál egy ArithmeticException
.
A kivételt a catch
blokk fogja el. És akkor a finally
blokk végrehajtásra kerül.
Megjegyzés : Jó gyakorlat a finally
blokk 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 throw
kulcsszóval kifejezetten egyetlen kivétel vethető be.
Amikor throw
egy kivétel, az áramlás a program mozog a try
blokk a catch
blokk.
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 ArithmeticException
a throw
kulcsszó használatát.
Ehhez hasonlóan a throws
kulcsszó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 FileInputStream
dob egy, FileNotFoundException
amely kiterjeszti az IOException
osztályt.
A findFile()
módszer meghatározza, hogy egy IOException
dobható. 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 throws
zá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.