Java kivételkezelés (példákkal)

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.

érdekes cikkek...