„Java“ grandinės išimtys

„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:

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.
Siūloma viktorina Redaguoti viktoriną 3 klausimai

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

Paaiškinimas:

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

Paaiškinimas:

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

Paaiškinimas:

Pavyzdyje NullPointerException nustatyta kaip NumberFormatException priežastis.

„Java“ grandinės išimtysViktorina sėkmingai atlikta jūsų balas:   2 /3 Tikslumas:  0 % Prisijunkite, kad pamatytumėte paaiškinimą 1 /3 1 /3 < Previous Kitas >