logo

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

  1. getCause() : Ta metoda vrne dejanski vzrok izjeme.
  2. 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:

rhel proti centos
Izhod' title=

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.