Java dob és dob kulcsszó

Ebben az oktatóanyagban megtanuljuk használni a dobás és a dobás kulcsszót a kivételkezeléshez példák segítségével.

A Java-ban a kivételek két típusba sorolhatók:

  • Nem ellenőrzött Kivételek: Ezek nem ellenőrzött fordításkor de járatni time.For például ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, kivételek Errorosztály, stb
  • Ellenőrzött kivételek: Összeállításkor ellenőrzik őket. Például, IOException, InterruptedException, stb

Olvassa el a Java kivételek című cikket, ahol részletesen megismerheti az ellenőrzött és nem ellenőrzött kivételeket.

Általában nem kell kezelnünk az ellenőrizetlen kivételeket. Ez azért van, mert a programozási hibák miatt nem ellenőrzött kivételek fordulnak elő. És jó gyakorlat kijavítani őket a kezelés helyett.

Ez az oktatóanyag arra összpontosít, hogy miként kezelje az ellenőrzött kivételeket a throwés a használatával throws.

Java dob kulcsszót

A throwsmethod deklarációban a kulcsszót használjuk a benne előforduló kivételek típusának deklarálására.

Szintaxisa:

 accessModifier returnType methodName() throws ExceptionType1, ExceptionType2… ( // code ) 

Amint a fenti szintaxisból is látszik, felhasználhatunk throwstöbb kivétel deklarálására.

1. példa: Java dobja a kulcsszót

 import java.io.*; class Main ( public static void findFile() throws IOException ( // code that may produce 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 (Nincs ilyen fájl vagy könyvtár) 

Ha futtatjuk ezt a programot, ha a fájl test.txtnem létezik, akkor FileInputStreamdob egy, FileNotFoundExceptionamely kiterjeszti az IOExceptionosztályt.

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, hogy a hívásveremben feljebb lévő módszerek throwsmaguk kezelhessék vagy megadhassák őket kulcsszóval.

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.

Több kivétel dobása

Így dobhatunk több kivételt a throwskulcsszó használatával.

 import java.io.*; class Main ( public static void findFile() throws NullPointerException, IOException, InvalidClassException ( // code that may produce NullPointerException… … … // code that may produce IOException… … … // code that may produce InvalidClassException… … … ) public static void main(String() args) ( try( findFile(); ) catch(IOException e1)( System.out.println(e1.getMessage()); ) catch(InvalidClassException e2)( System.out.println(e2.getMessage()); ) ) ) 

Itt a findFile()módszer előírja, hogy dobja NullPointerException, IOExceptionés InvalidClassExceptionannak throwszáradékot.

Vegye figyelembe, hogy nem kezeltük a NullPointerException. Ez azért van, mert nem ellenőrzött kivétel. Nem szükséges a throwszáradékban meghatározni és kezelni.

dobja a Vs kulcsszót. próbáld meg … elkapni … végre

Lehet, hogy számos módszer okozhat kivételt. Az try… catchegyes módszerek megírása unalmas lesz, a kód hosszú és kevésbé olvashatóvá válik.

throws akkor is hasznos, ha bejelöli a kivételt (egy kivételt, amelyet kezelni kell), amelyet nem szeretne elkapni a jelenlegi módszerével.

Java dob kulcsszó

A throwkulcsszó arra szolgál, hogy kifejezetten egyetlen kivételt dobjon.

Kivétel esetén a program végrehajtásának folyamata átkerül a tryblokkból a catchblokkba. A throwkulcsszót egy módszeren belül használjuk .

Szintaxisa:

 throw throwableObject;

A dobható objektum az osztály Throwablevagy az Throwableosztály alosztályának példánya .

2. példa: Java dob kulcsszó

 class Main ( public static void divideByZero() ( 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:3) a Main.main (Main.java:7) kilépési állapotban 1 

Ebben a példában kifejezetten egy ArithmeticException.

Megjegyzés: ArithmeticException nem ellenőrzött kivétel. Általában nem szükséges kezelni az ellenőrizetlen kivételeket.

3. példa: Dobás ellenőrzött kivétel

 import java.io.*; class Main ( public static void findFile() throws IOException ( throw new IOException("File not found"); ) public static void main(String() args) ( try ( findFile(); System.out.println("Rest of code in try block"); ) catch (IOException e) ( System.out.println(e.getMessage()); ) ) ) 

Kimenet

 Fájl nem található 

A findFile()módszer dob egy IOExceptionüzenetet, amelyet a konstruktorának továbbítottunk.

Vegye figyelembe, hogy mivel ez egy bejelölt kivétel, meg kell adnunk a throwszáradékban.

Azoknak a metódusoknak, amelyek ezt a findFile()módszert hívják , vagy kezelniük kell ezt a kivételt, vagy throwsmaguknak a kulcsszó segítségével kell megadniuk.

Ezt a kivételt a main()módszerben kezeltük. A program végrehajtásának folyamata átkerül a tryblokkból a catchblokkba, ha kivételt dob. Tehát a tryblokk többi része kihagyásra kerül, és a catchmondat utasításai végrehajtásra kerülnek.

érdekes cikkek...