„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
- getCause () : Šis metodas grąžina tikrąją išimties priežastį.
- 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
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.