Láncolt kivételek Java-ban
A Java láncolt kivételei lehetővé teszik az egyik kivétel társítását a másikkal, azaz az egyik kivétel egy másik kivétel okát írja le.
- Vegyünk például egy olyan helyzetet, amelyben egy metódus egy Aritmetikai kivétel nullával való osztási kísérlet miatt.
- De a hiba kiváltó oka egy I/O hiba volt, ami miatt az osztó nulla lett.
- Ilyen esetekben a láncolt kivételek segítenek a hiba elsődleges és mögöttes okainak terjesztésében.
Példa : A következő példa bemutatja a láncolt kivételek használatát a Java-ban.
Java // Working of chained exceptions public class Geeks { public static void main ( String [] args ) { try { // Creating an exception NumberFormatException ex = new NumberFormatException ( 'Primary Exception' ); // Setting the cause of the exception ex . initCause ( new NullPointerException ( 'Root cause of the exception' )); // Throwing the exception with a cause throw ex ; } catch ( NumberFormatException ex ) { // Displaying the primary exception System . out . println ( 'Caught Exception: ' + ex ); // Displaying the root cause of the exception System . out . println ( 'Cause of Exception: ' + ex . getCause ()); } } }
Kimenet
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception
Jegyzet: A láncolt kivételek, más néven beágyazott kivételek, lehetővé teszik számunkra, hogy egy okot a Java kivételével társítsunk. Ez akkor hasznos, ha információt akarunk terjeszteni a kivétel eredeti okáról.
Konstruktorok
- Eldobható (eldobható ok) : Ahol az ok a kivétel, amely az aktuális kivételt okozza.
- Dobható (karakterláncüzenet, dobás oka) : Ahol az msg a kivételüzenet, az ok pedig az aktuális kivételt okozó kivétel.
A dobható alátámasztó láncos kivételek módszerei
- getCause() : Ez a módszer a kivétel tényleges okát adja vissza.
- initCause (eldobható ok) : Ez a módszer beállítja a hívási kivétel okát.
Példa: Egyéni üzenet használata láncolt kivételekkel
Java-ban a kivételeket a Throwable osztály konstruktorával láncolhatjuk.
Java // Use a custom message with chained exception public class Geeks { public static void main ( String [] args ) { try { // Code that might throw an exception int [] n = new int [ 5 ] ; int divisor = 0 ; for ( int i = 0 ; i < n . length ; i ++ ) { int res = n [ i ] / divisor ; System . out . println ( res ); } } catch ( ArithmeticException e ) { // Creating a new exception with // the original as the cause throw new RuntimeException ( 'Error: Division by zero occurred' e ); } } }
Kimenet:
Magyarázat: Ebben a példában egy egész számokból álló tömb, és az osztót 0-ra állítja.
- A try blokkon belül megpróbálja elosztani a tömb minden elemét 0-val, ami ArithmeticException-t dob.
- Ez az ArithmeticException a fogási blokkba kerül, ahol egy új futásidejű kivétel jön létre az eredeti kivétellel, azaz az Aritmetikai kivétellel.
- Mivel a RuntimeException nem kerül rögzítésre, amely megjeleníti a verem nyomkövetését, beleértve a RuntimeException-t és az ArithmeticException-t.
A láncolt kivételek előnyei:
Az alábbiakban felsoroljuk a láncolt kivételek előnyeit:
- Ez a kivétel segít a hibakeresésben, mivel részleteket ad az elsődleges és a kiváltó okokról.
- Leegyszerűsíti a hibakezelést azáltal, hogy lehetővé teszi a teljes kivételkontextus terjesztését.
- Ez javítja a hibák nyomon követhetőségét az összetett alkalmazásokban.
A láncolt kivételek hátrányai:
- Ha nem megfelelően használják, meghosszabbíthatja és nehezebben olvashatóvá teheti a veremnyomot.
- A túlzott használat zavaró hibaüzeneteket okozhat, ha a kivételeket szükségtelenül láncolják.
- A fejlesztőknek biztosítaniuk kell az értelmes okok összekapcsolását; különben a hibakeresés során félrevezethet.
Mi a láncolt kivételek fő célja a Java-ban?
- A
Hogy elrejtse a kivétel kiváltó okát
- B
Egy kivételt a másikhoz társítani
- C
A kód teljesítményének javítása érdekében
- D
A futásidejű hibák automatikus javítása
A láncolt kivételek lehetővé teszik az egyik kivétel összekapcsolását a másikkal a kiváltó ok kimutatása érdekében.
Melyik módszerrel állítják be a kivétel okát?
- A
getMessage()
- B
setException()
- C
initCause()
- D
initCause()
Az initCause() metódus beállítja a kivételek mögöttes okát.
A példában milyen típusú kivétel van beállítva a NumberFormatException okaként?
- A
IOException
- B
Aritmetikai kivétel
- C
NullPointerException
- D
RuntimeException
A példa egy NullPointerException-t állít be a NumberFormatException okaként.
A kvíz sikeresen kitöltött pontszáma: 2 /3 Pontosság: 0% Jelentkezzen be a magyarázat megtekintéséhez 1 /3 1 /3 < Previous Következő >