Ķēdētie izņēmumi Java

Ķēdētie izņēmumi Java

Java ķēdes izņēmumi ļauj saistīt vienu izņēmumu ar citu, t.i., viens izņēmums apraksta cita izņēmuma cēloni.

  • Piemēram, apsveriet situāciju, kurā metode izmet an Aritmētiskais izņēmums jo mēģinājums dalīt ar nulli.
  • Bet galvenais kļūdas cēlonis bija I/O kļūme, kuras dēļ dalītājs bija nulle.
  • Šādos gadījumos ķēdes izņēmumi palīdz izplatīt gan primāros, gan kļūdas pamatcēloņus.

Piemērs : Šis piemērs parāda, kā Java izmantot ķēdītos izņēmumus.

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

Izvade
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception  

Piezīme: Ķēdētie izņēmumi, kas pazīstami arī kā ligzdotie izņēmumi, ļauj mums Java saistīt cēloni ar izņēmumu. Tas ir noderīgi, ja vēlamies izplatīt informāciju par izņēmuma sākotnējo cēloni.

Konstruktori

  • Metams (metams iemesls) : kur iemesls ir izņēmums, kas izraisa pašreizējo izņēmumu.
  • Izmetams (virknes ziņojums, ka jāmet) : kur msg ir izņēmuma ziņojums un cēlonis ir izņēmums, kas izraisa pašreizējo izņēmumu.

Metamo atbalsta ķēdes izņēmumu metodes

  1. getCause() : šī metode atgriež faktisko izņēmuma cēloni.
  2. initCause (izmetams iemesls) : šī metode iestata izsaukuma izņēmuma cēloni.

Piemērs: Pielāgota ziņojuma izmantošana ar ķēdītiem izņēmumiem

Java mēs varam ķēdīt izņēmumus, izmantojot klases Throwable konstruktoru.

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

Izvade:

Izvade

Paskaidrojums: Šajā piemērā veselu skaitļu masīvs un iestata dalītāju uz 0.

  • Try blokā tas mēģina dalīt katru masīva elementu ar 0, kas rada aritmētisko izņēmumu.
  • Šis arithmētiskais izņēmums ir noķerts nozvejas blokā, kurā tiek izveidots jauns izpildlaika izņēmums ar sākotnējo izņēmumu, t.i., aritmētisko izņēmumu kā tā cēloni.
  • Tā kā RuntimeException netiek notverts, kas parāda steka izsekošanu, tostarp RuntimeException un AritmeticException.

Ķēdes izņēmumu priekšrocības:

Tālāk ir norādītas ķēdes izņēmumu priekšrocības:

  • Šis izņēmums palīdz atkļūdot, sniedzot informāciju gan par primārajiem, gan pamatcēloņiem.
  • Tas vienkāršo kļūdu apstrādi, nodrošinot pilnīga izņēmuma konteksta izplatīšanu.
  • Tas uzlabo kļūdu izsekojamību sarežģītās lietojumprogrammās.

Ķēdes izņēmumu trūkumi:

  • Ja to neizmanto pareizi, tas var padarīt steku garāku un grūtāk nolasāmu.
  • Pārmērīga izmantošana var radīt mulsinošus kļūdu ziņojumus, ja izņēmumi ir nevajadzīgi savienoti ķēdē.
  • Izstrādātājiem ir jānodrošina jēgpilnu iemeslu saistība; pretējā gadījumā tas var maldināt atkļūdošanas laikā.
Ieteiktā viktorīna Rediģēt viktorīnu 3 Jautājumi

Kāds ir Java ķēdē savienoto izņēmumu galvenais mērķis?

  • A

    Lai slēptu izņēmuma galveno cēloni

  • B

    Saistīt vienu izņēmumu ar citu

  • C

    Lai uzlabotu koda veiktspēju

  • D

    Lai automātiski labotu izpildlaika kļūdas

Paskaidrojums:

Ķēdētie izņēmumi ļauj saistīt vienu izņēmumu ar citu, lai parādītu galveno cēloni.

Kura metode tiek izmantota, lai noteiktu izņēmuma cēloni?

  • A

    getMessage()

  • B

    setException()

  • C

    initCause()

  • D

    initCause()

Paskaidrojums:

Metode initCause() nosaka izņēmuma cēloni.

Kāda veida izņēmums šajā piemērā ir iestatīts kā NumberFormatException iemesls?

  • A

    IOIzņēmums

  • B

    Aritmētiskais izņēmums

  • C

    NullPointerException

  • D

    RuntimeException

Paskaidrojums:

Piemērā kā NumberFormatException cēlonis ir iestatīts NullPointerException.

Ķēdētie izņēmumi JavaViktorīna ir veiksmīgi pabeigta, jūsu rezultāts:   2 /3 Precizitāte:  0% Piesakieties, lai skatītu skaidrojumu 1 /3 1 /3 < Previous Nākamais >