„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
- 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:
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.
Koks yra pagrindinis „Java“ grandininių išimčių tikslas?
- A
Norėdami paslėpti pagrindinę išimties priežastį
- B
Susieti vieną išimtį su kita
- C
Norėdami pagerinti kodo veikimą
- D
Norėdami automatiškai ištaisyti vykdymo klaidas
Sujungtos išimtys leidžia susieti vieną išimtį su kita, kad būtų parodyta pagrindinė priežastis.
Kuris metodas naudojamas išimties priežasčiai nustatyti?
- A
getMessage()
- B
setException()
- C
initCause()
- D
initCause()
Metodas initCause() nustato pagrindinę išimties priežastį.
Kokio tipo išimtis pavyzdyje nustatyta kaip NumberFormatException priežastis?
- A
IO išimtis
- B
Aritmetinė išimtis
- C
NullPointerException
- D
RuntimeException
Pavyzdyje NullPointerException nustatyta kaip NumberFormatException priežastis.
Viktorina sėkmingai atlikta jūsų balas: 2 /3 Tikslumas: 0 % Prisijunkite, kad pamatytumėte paaiškinimą 1 /3 1 /3 < Previous Kitas >