Kedjebundna undantag i Java

Kedjebundna undantag i Java

Chained Exceptions i Java tillåter att associera ett undantag med ett annat, dvs ett undantag beskriver orsaken till ett annat undantag.

  • Tänk till exempel på en situation där en metod kastar en ArithmeticException på grund av ett försök att dividera med noll.
  • Men grundorsaken till felet var ett I/O-fel som gjorde att divisorn var noll.
  • I sådana fall hjälper kedjade undantag att sprida både de primära och underliggande orsakerna till felet.

Exempel : Följande exempel visar hur man använder kedjade undantag 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  ());      }      }   }   

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

Notera: Med kedjade undantag, även kända som kapslade undantag, kan vi associera en orsak med ett undantag i Java. Detta är användbart när vi vill sprida information om den ursprungliga orsaken till ett undantag.

Konstruktörer

  • Kastbar (kastbar orsak) : Där orsak är undantaget som orsakar det aktuella undantaget.
  • Kastbar (String msg Kastbar orsak) : Där msg är undantagsmeddelandet och orsak är undantaget som orsakar det aktuella undantaget.

Metoder för kastbara stödjande kedjade undantag

  1. getCause() : Denna metod returnerar den faktiska orsaken till ett undantag.
  2. initCause(Uppkastbar orsak) : Den här metoden anger orsaken till det anropande undantaget.

Exempel: Använda ett anpassat meddelande med kedjade undantag

I Java kan vi kedja undantag med hjälp av konstruktorn för klassen Throwable.

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

Produktion:

Produktion

Förklaring: I det här exemplet en matris med heltal och sätter divisorn till 0.

  • Inuti försöksblocket försöker den dela varje element i arrayen med 0 vilket ger ett ArithmeticException.
  • Detta ArithmeticException fångas i catch-blocket där ett nytt RuntimeException skapas med det ursprungliga undantaget, dvs ArithmeticException som orsak.
  • Eftersom RuntimeException inte fångas upp som visar stackspåret inklusive RuntimeException och ArithmeticException.

Fördelar med kedjade undantag:

Fördelarna med kedjade undantag listas nedan:

  • Detta undantag hjälper till vid felsökning genom att tillhandahålla information om både primära och rotorsaker.
  • Det förenklar felhanteringen genom att möjliggöra spridning av fullständig undantagskontext.
  • Detta förbättrar spårbarheten av fel i komplexa applikationer.

Nackdelar med kedjade undantag:

  • Om den inte används på rätt sätt kan den göra stacken längre och svårare att läsa.
  • Överanvändning kan orsaka förvirrande felmeddelanden om undantag är kedjade i onödan.
  • Utvecklare måste se till att meningsfulla orsaker är kopplade; annars kan det vilseleda under felsökning.
Förslag på frågesport Redigera frågesport 3 frågor

Vad är huvudsyftet med kedjade undantag i Java?

  • A

    För att dölja grundorsaken till ett undantag

  • B

    Att associera ett undantag med ett annat

  • C

    För att förbättra kodprestandan

  • D

    För att automatiskt åtgärda körtidsfel

Förklaring:

Med kedjade undantag kan man länka ett undantag till ett annat för att visa grundorsaken.

Vilken metod används för att fastställa orsaken till ett undantag?

  • A

    getMessage()

  • B

    setException()

  • C

    initCause()

  • D

    initCause()

Förklaring:

Metoden initCause() anger den underliggande orsaken till ett undantag.

Vilken typ av undantag anges i exemplet som orsak till NumberFormatException?

  • A

    IOException

  • B

    ArithmeticException

  • C

    NullPointerException

  • D

    RuntimeException

Förklaring:

Exemplet anger ett NullPointerException som orsak till NumberFormatException.

Kedjebundna undantag i JavaQuiz har slutförts framgångsrikt. Ditt resultat:   2 /3 Noggrannhet:  0 % Logga in för att se förklaring 1 /3 1 /3 < Previous Nästa >