logo

Ķē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:

raksturs.salīdzināt java
Izvade' title=

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ā.