logo

„Java“ grandinės išimtys

„Java“ grandinės išimtys leidžia susieti vieną išimtį su kita, ty viena išimtis apibūdina kitos išimties priežastį.

  • Pavyzdžiui, apsvarstykite situaciją, kai metodas meta an Aritmetinė išimtis dėl bandymo padalyti iš nulio.
  • Tačiau pagrindinė klaidos priežastis buvo įvesties / išvesties gedimas, dėl kurio daliklis buvo lygus nuliui.
  • Tokiais atvejais grandinės išimtys padeda skleisti pagrindines ir pagrindines klaidos priežastis.

Pavyzdys : Šiame pavyzdyje parodyta, kaip „Java“ naudoti grandinines išimtis.

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());  }  } } 

Išvestis
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception 

Pastaba: Sujungtos išimtys, dar vadinamos įdėtomis išimtimis, leidžia susieti priežastį su išimtimi Java. Tai naudinga, kai norime skleisti informaciją apie pirminę išimties priežastį.



Konstruktoriai

  • Išmetama (mėtoma priežastis) : kur priežastis yra išimtis, kuri sukelia dabartinę išimtį.
  • Išmetama (Styginio pranešimo metamas priežastis) : kur msg yra išimties pranešimas, o priežastis yra išimtis, sukelianti dabartinę išimtį.

Išmetimo grandinės atraminių išimčių metodai

  1. getCause () : Šis metodas grąžina tikrąją išimties priežastį.
  2. initCause (išmetama priežastis) : Šis metodas nustato skambinimo išimties priežastį.

Pavyzdys: Pasirinktinio pranešimo naudojimas su grandininėmis išimtimis

„Java“ sistemoje išimtis galime sujungti naudodami „throwable“ klasės konstruktorių.

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);  }  } } 

Išvestis:

bin į bcd
Išvestis' title=

Paaiškinimas: Šiame pavyzdyje sveikųjų skaičių masyvas ir nustato daliklį į 0.

  • Bandymo bloke jis bando padalyti kiekvieną masyvo elementą iš 0, o tai sukuria aritmetinę išimtį.
  • Ši aritmetinė išimtis yra įtraukta į gaudymo bloką, kuriame sukuriama nauja vykdymo trukmės išimtis, kurios priežastis yra pradinė išimtis, t. y. aritmetinė išimtis.
  • Kadangi RuntimeException nepagaunama, kuri rodo dėklo pėdsaką, įskaitant RuntimeException ir AritmeticException.

Grandininių išimčių privalumai:

Toliau pateikiami grandininių išimčių pranašumai:

  • Ši išimtis padeda derinti, nes pateikia išsamios informacijos apie pagrindines ir pagrindines priežastis.
  • Tai supaprastina klaidų tvarkymą, nes leidžia platinti visą išimties kontekstą.
  • Tai pagerina klaidų atsekamumą sudėtingose ​​programose.

Grandininių išimčių trūkumai:

  • Jei naudojamas netinkamai, krūvos pėdsakas gali pailgėti ir jį bus sunkiau perskaityti.
  • Per didelis naudojimas gali sukelti klaidinančius klaidų pranešimus, jei išimtys be reikalo sujungiamos.
  • Kūrėjai turi užtikrinti, kad prasmingos priežastys būtų susietos; kitu atveju jis gali suklaidinti derinimo metu.