Verižne izjeme v Javi
Verižne izjeme v Javi omogočajo povezovanje ene izjeme z drugo, tj. ena izjema opisuje vzrok druge izjeme.
- Na primer, razmislite o situaciji, v kateri metoda vrže an ArithmeticException zaradi poskusa deljenja z ničlo.
- Toda glavni vzrok napake je bila napaka V/I, zaradi katere je bil delitelj enak nič.
- V takih primerih verižne izjeme pomagajo širiti tako primarne kot temeljne vzroke napake.
Primer : Naslednji primer prikazuje, kako uporabiti verižne izjeme v Javi.
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 ()); } } }
Izhod
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception
Opomba: Verižne izjeme, znane tudi kot ugnezdene izjeme, nam omogočajo, da vzrok povežemo z izjemo v Javi. To je uporabno, ko želimo posredovati informacije o prvotnem vzroku izjeme.
Konstruktorji
- Throwable (Trowable vzrok) : kjer je vzrok izjema, ki povzroči trenutno izjemo.
- Throwable (String msg Throwable vzrok) : kjer je sporočilo sporočilo o izjemi, vzrok pa je izjema, ki povzroči trenutno izjemo.
Metode Throwable podpirajo verižne izjeme
- getCause() : Ta metoda vrne dejanski vzrok izjeme.
- initCause (vrečni vzrok) : Ta metoda nastavi vzrok za klicno izjemo.
primer: Uporaba sporočila po meri z verižnimi izjemami
V Javi lahko verižimo izjeme z uporabo konstruktorja razreda Throwable.
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 ); } } }
Izhod:
Pojasnilo: V tem primeru niz celih števil in nastavi delitelj na 0.
- Znotraj poskusnega bloka poskuša razdeliti vsak element matrike z 0, kar vrže ArithmeticException.
- Ta ArithmeticException je ujeta v bloku catch, kjer je ustvarjena nova RuntimeException z izvirno izjemo, tj. ArithmeticException kot vzrokom.
- Ker RuntimeException ni ujeta, kar prikaže sled sklada, vključno z RuntimeException in ArithmeticException.
Prednosti verižnih izjem:
Prednosti verižnih izjem so navedene spodaj:
- Ta izjema pomaga pri odpravljanju napak z zagotavljanjem podrobnosti o primarnih in temeljnih vzrokih.
- Poenostavi obravnavo napak z omogočanjem širjenja celotnega konteksta izjeme.
- To izboljša sledljivost napak v kompleksnih aplikacijah.
Slabosti verižnih izjem:
- Če se ne uporablja pravilno, lahko sled sklada postane daljša in težje berljiva.
- Prekomerna uporaba lahko povzroči nejasna sporočila o napakah, če so izjeme po nepotrebnem verižene.
- Razvijalci morajo zagotoviti, da so pomembni vzroki povezani; drugače lahko zavede med odpravljanjem napak.
Kaj je glavni namen verižnih izjem v Javi?
- A
Če želite skriti glavni vzrok izjeme
- B
Eno izjemo povezati z drugo
- C
Za izboljšanje delovanja kode
- D
Za samodejno odpravljanje napak med izvajanjem
Verižne izjeme omogočajo povezovanje ene izjeme z drugo, da se prikaže osnovni vzrok.
Katera metoda se uporablja za nastavitev vzroka izjeme?
- A
getMessage()
- B
setException()
- C
initCause()
- D
initCause()
Metoda initCause() nastavi osnovni vzrok izjeme.
Katera vrsta izjeme je v primeru nastavljena kot vzrok za NumberFormatException?
- A
IOException
- B
ArithmeticException
- C
NullPointerException
- D
RuntimeException
Primer nastavi izjemo NullPointerException kot vzrok za izjemo NumberFormatException.
Kviz uspešno zaključen Vaš rezultat: 2 /3 Natančnost: 0 % Prijavite se za ogled razlage 1 /3 1 /3 < Previous Naprej >