Kjede unntak i Java

Kjede unntak i Java

Kjede unntak i Java tillater å assosiere ett unntak med et annet, dvs. ett unntak beskriver årsaken til et annet unntak.

  • Tenk for eksempel på en situasjon der en metode kaster en Aritmetisk unntak på grunn av et forsøk på å dele på null.
  • Men grunnårsaken til feilen var en I/O-feil som førte til at divisoren var null.
  • I slike tilfeller hjelper sammenkjedede unntak å spre både de primære og underliggende årsakene til feilen.

Eksempel : Følgende eksempel viser hvordan du bruker kjedede unntak i Java.

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

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

Note: Kjede unntak også kjent som nestede unntak lar oss knytte en årsak til et unntak i Java. Dette er nyttig når vi ønsker å spre informasjon om den opprinnelige årsaken til et unntak.

Konstruktører

  • Kastbar (årsak som kan kastes) : Der årsak er unntaket som forårsaker det gjeldende unntaket.
  • Kastbar (String msg Kastbar årsak) : Hvor msg er unntaksmeldingen og årsak er unntaket som forårsaker det gjeldende unntaket.

Metoder for kastbare støttende kjedede unntak

  1. getCause() : Denne metoden returnerer den faktiske årsaken til et unntak.
  2. initCause (kastbar årsak) : Denne metoden angir årsaken til det anropende unntaket.

Eksempel: Bruke en tilpasset melding med lenkede unntak

I Java kan vi kjede unntak ved å bruke konstruktøren til Throwable-klassen.

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

Produksjon:

Produksjon

Forklaring: I dette eksemplet en matrise med heltall og setter divisor til 0.

  • Inne i try-blokken prøver den å dele hvert element i matrisen med 0, noe som gir et ArithmeticException.
  • Dette ArithmeticException er fanget i catch-blokken der et nytt RuntimeException opprettes med det opprinnelige unntaket, dvs. ArithmeticException som årsak.
  • Siden RuntimeException ikke fanges opp som viser stabelsporet inkludert RuntimeException og ArithmeticException.

Fordeler med lenkede unntak:

Fordelene med kjedede unntak er listet opp nedenfor:

  • Dette unntaket hjelper til med feilsøking ved å gi detaljer om både primære og rotårsaker.
  • Det forenkler feilhåndtering ved å aktivere spredning av fullstendig unntakskontekst.
  • Dette forbedrer sporbarheten av feil i komplekse applikasjoner.

Ulemper med lenkede unntak:

  • Hvis det ikke brukes riktig, kan det gjøre stabelsporet lengre og vanskeligere å lese.
  • Overbruk kan forårsake forvirrende feilmeldinger hvis unntak er lenket unødvendig.
  • Utviklere må sørge for at meningsfulle årsaker er knyttet sammen; ellers kan det villede under feilsøking.
Foreslått quiz Rediger Quiz 3 spørsmål

Hva er hovedformålet med lenkede unntak i Java?

  • EN

    For å skjule grunnårsaken til et unntak

  • B

    Å knytte ett unntak med et annet

  • C

    For å forbedre kodeytelsen

  • D

    For automatisk å fikse kjøretidsfeil

Forklaring:

Kjede unntak gjør det mulig å koble ett unntak til et annet for å vise grunnårsaken.

Hvilken metode brukes for å angi årsaken til et unntak?

  • EN

    getMessage()

  • B

    setException()

  • C

    initCause()

  • D

    initCause()

Forklaring:

Metoden initCause() setter den underliggende årsaken til et unntak.

I eksemplet hvilken type unntak er satt som årsak til NumberFormatException?

  • EN

    IOException

  • B

    Aritmetisk unntak

  • C

    NullPointerException

  • D

    RuntimeException

Forklaring:

Eksemplet setter en NullPointerException som årsak til NumberFormatException.

Kjede unntak i JavaQuiz fullførte poengsummen din:   2 /3 Nøyaktighet:  0 % Logg inn for å se forklaring 1 /3 1 /3 < Previous Neste >