logo

Javalla ketjutetut poikkeukset

Javan ketjutetut poikkeukset mahdollistavat yhden poikkeuksen yhdistämisen toiseen, eli yksi poikkeus kuvaa toisen poikkeuksen syytä.

  • Tarkastellaan esimerkiksi tilannetta, jossa menetelmä heittää an Aritmeettinen poikkeus nollalla jakamisyrityksen takia.
  • Mutta virheen perimmäinen syy oli I/O-virhe, joka aiheutti jakajan olevan nolla.
  • Tällaisissa tapauksissa ketjutetut poikkeukset auttavat levittämään sekä virheen ensisijaisia ​​että taustalla olevia syitä.

Esimerkki : Seuraava esimerkki osoittaa kuinka ketjutettuja poikkeuksia käytetään Javassa.

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

Lähtö
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception 

Huomautus: Ketjutetut poikkeukset, joita kutsutaan myös sisäkkäisiksi poikkeuksiksi, antavat meille mahdollisuuden yhdistää syyn poikkeukseen Javassa. Tämä on hyödyllistä, kun haluamme levittää tietoa poikkeuksen alkuperäisestä syystä.



Rakentajat

  • Heitettävä (heitettävä syy) : Missä syy on poikkeus, joka aiheuttaa nykyisen poikkeuksen.
  • Heitettävä (merkkijonoviesti Heitettävä syy) : Missä msg on poikkeusviesti ja syy on poikkeus, joka aiheuttaa nykyisen poikkeuksen.

Menetelmät heitettävien tukiketjujen poikkeuksiin

  1. getCause() : Tämä menetelmä palauttaa poikkeuksen todellisen syyn.
  2. initCause (heitettävä syy) : Tämä menetelmä määrittää kutsupoikkeuksen syyn.

Esimerkki: Mukautetun viestin käyttäminen ketjutetuilla poikkeuksilla

Javassa voimme ketjuttaa poikkeuksia käyttämällä Throwable-luokan konstruktoria.

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

Lähtö:

mahdoton tehtävä kaikki elokuvat
Lähtö' title=

Selitys: Tässä esimerkissä kokonaislukujen joukko ja asettaa jakajaksi 0.

  • Try-lohkon sisällä se yrittää jakaa taulukon jokaisen elementin 0:lla, mikä antaa aritmeettisen poikkeuksen.
  • Tämä aritmeettinen poikkeus jää kiinni lohkoon, jossa luodaan uusi RuntimeException, jonka syynä on alkuperäinen poikkeus eli AritmeticException.
  • Koska RuntimeExceptionia ei havaita, mikä näyttää pinon jäljityksen, mukaan lukien RuntimeException ja AritmeticException.

Ketjuttujen poikkeusten edut:

Ketjuttujen poikkeusten edut on lueteltu alla:

  • Tämä poikkeus auttaa virheenkorjauksessa antamalla tietoja sekä ensisijaisista että perimmäisistä syistä.
  • Se yksinkertaistaa virheiden käsittelyä mahdollistamalla täydellisen poikkeuskontekstin leviämisen.
  • Tämä parantaa virheiden jäljitettävyyttä monimutkaisissa sovelluksissa.

Ketjuttujen poikkeusten haitat:

  • Jos sitä ei käytetä oikein, se voi tehdä pinojäljestä pidemmän ja vaikeammin luettavan.
  • Liiallinen käyttö voi aiheuttaa hämmentäviä virheilmoituksia, jos poikkeuksia ketjutetaan tarpeettomasti.
  • Kehittäjien on varmistettava, että merkitykselliset syyt liittyvät toisiinsa. muuten se voi johtaa harhaan virheenkorjauksen aikana.