Verkettete Ausnahmen in Java

Verkettete Ausnahmen in Java

Verkettete Ausnahmen in Java ermöglichen die Verknüpfung einer Ausnahme mit einer anderen, d. h. eine Ausnahme beschreibt die Ursache einer anderen Ausnahme.

  • Stellen Sie sich beispielsweise eine Situation vor, in der eine Methode eine auslöst ArithmeticException wegen eines Versuchs, durch Null zu dividieren.
  • Die Hauptursache des Fehlers war jedoch ein E/A-Fehler, der dazu führte, dass der Divisor Null war.
  • In solchen Fällen helfen verkettete Ausnahmen dabei, sowohl die primäre als auch die zugrunde liegende Fehlerursache zu verbreiten.

Beispiel : Das folgende Beispiel zeigt, wie verkettete Ausnahmen in Java verwendet werden.

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

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

Notiz: Verkettete Ausnahmen, auch verschachtelte Ausnahmen genannt, ermöglichen es uns, in Java eine Ursache einer Ausnahme zuzuordnen. Dies ist nützlich, wenn wir Informationen über die ursprüngliche Ursache einer Ausnahme weitergeben möchten.

Konstrukteure

  • Throwable (Wurfbare Ursache) : Wobei Ursache die Ausnahme ist, die die aktuelle Ausnahme verursacht.
  • Throwable(String msg Throwable Cause) : Wobei „msg“ die Ausnahmemeldung und „cause“ die Ausnahme ist, die die aktuelle Ausnahme verursacht.

Methoden für auslösbare, unterstützende verkettete Ausnahmen

  1. getCause() : Diese Methode gibt die tatsächliche Ursache einer Ausnahme zurück.
  2. initCause(Auslösbare Ursache) : Diese Methode legt die Ursache für die aufrufende Ausnahme fest.

Beispiel: Verwenden einer benutzerdefinierten Nachricht mit verketteten Ausnahmen

In Java können wir Ausnahmen mit dem Konstruktor der Throwable-Klasse verketten.

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

Ausgabe:

Ausgabe

Erläuterung: In diesem Beispiel ein Array von Ganzzahlen und setzt den Divisor auf 0.

  • Im Try-Block wird versucht, jedes Element des Arrays durch 0 zu dividieren, was eine ArithmeticException auslöst.
  • Diese ArithmeticException wird im Catch-Block abgefangen, wo eine neue RuntimeException mit der ursprünglichen Ausnahme, d. h. ArithmeticException, als Ursache erstellt wird.
  • Da die RuntimeException nicht abgefangen wird, wird der Stack-Trace einschließlich der RuntimeException und der ArithmeticException angezeigt.

Vorteile verketteter Ausnahmen:

Die Vorteile verketteter Ausnahmen sind unten aufgeführt:

  • Diese Ausnahme hilft beim Debuggen, indem sie Details zu den Haupt- und Grundursachen bereitstellt.
  • Es vereinfacht die Fehlerbehandlung, indem es die Weitergabe des vollständigen Ausnahmekontexts ermöglicht.
  • Dies verbessert die Nachvollziehbarkeit von Fehlern in komplexen Anwendungen.

Nachteile verketteter Ausnahmen:

  • Bei unsachgemäßer Verwendung kann die Stapelverfolgung länger und schwerer lesbar werden.
  • Übermäßiger Gebrauch kann zu verwirrenden Fehlermeldungen führen, wenn Ausnahmen unnötig verkettet werden.
  • Entwickler müssen sicherstellen, dass sinnvolle Ursachen verknüpft sind. Andernfalls kann es beim Debuggen zu Irrtümern kommen.
Empfohlenes Quiz Quiz bearbeiten 3 Fragen

Was ist der Hauptzweck verketteter Ausnahmen in Java?

  • A

    Um die Grundursache einer Ausnahme zu verbergen

  • B

    Um eine Ausnahme mit einer anderen zu verknüpfen

  • C

    Um die Codeleistung zu verbessern

  • D

    Um Laufzeitfehler automatisch zu beheben

Erläuterung:

Verkettete Ausnahmen ermöglichen die Verknüpfung einer Ausnahme mit einer anderen, um die Grundursache anzuzeigen.

Mit welcher Methode wird die Ursache einer Ausnahme festgelegt?

  • A

    getMessage()

  • B

    setException()

  • C

    initCause()

  • D

    initCause()

Erläuterung:

Die Methode initCause() legt die zugrunde liegende Ursache einer Ausnahme fest.

Welche Art von Ausnahme wird im Beispiel als Ursache für NumberFormatException festgelegt?

  • A

    IOException

  • B

    ArithmeticException

  • C

    NullPointerException

  • D

    RuntimeException

Erläuterung:

Das Beispiel legt eine NullPointerException als Ursache der NumberFormatException fest.

Verkettete Ausnahmen in JavaQuiz erfolgreich abgeschlossen. Ihre Punktzahl:   2 /3 Genauigkeit :  0% Melden Sie sich an, um die Erklärung anzuzeigen 1 /3 1 /3 < Previous Weiter >