Auf Englisch lesen

Freigeben über


Exception.InnerException Eigenschaft

Definition

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.

C#
public Exception InnerException { get; }
C#
public Exception? InnerException { get; }

Eigenschaftswert

Exception

Eine Instanz, die den Fehler beschreibt, der die aktuelle Ausnahme verursacht hat. Die InnerException-Eigenschaft gibt gleichen Wert zurück, der an den Exception(String, Exception)-Konstruktor übergeben wurde, oder null, wenn der Wert der inneren Ausnahme nicht an den Konstruktor übergeben wurde. Diese Eigenschaft ist schreibgeschützt.

Implementiert

Beispiele

Im folgenden Beispiel wird das Auslösen und Abfangen einer Ausnahme veranschaulicht, die auf eine innere Ausnahme verweist.

C#
using System;

public class AppException : Exception
{
   public AppException(String message) : base (message)
   {}

   public AppException(String message, Exception inner) : base(message,inner) {}
}

public class Example
{
   public static void Main()
   {
      Example ex = new Example();

      try {
         ex.CatchInner();
      }
      catch(AppException e) {
         Console.WriteLine ("In catch block of Main method.");
         Console.WriteLine("Caught: {0}", e.Message);
         if (e.InnerException != null)
            Console.WriteLine("Inner exception: {0}", e.InnerException);
      }
   }

   public void ThrowInner ()
   {
      throw new AppException("Exception in ThrowInner method.");
   }

   public void CatchInner()
   {
      try {
         this.ThrowInner();
      }
      catch (AppException e) {
         throw new AppException("Error in CatchInner caused by calling the ThrowInner method.", e);
      }
   }
}
// The example displays the following output:
//    In catch block of Main method.
//    Caught: Error in CatchInner caused by calling the ThrowInner method.
//    Inner exception: AppException: Exception in ThrowInner method.
//       at Example.ThrowInner()
//       at Example.CatchInner()

Hinweise

Wenn eine Ausnahme als direktes Ergebnis einer vorherigen Ausnahme X Yausgelöst wird, sollte die InnerException Eigenschaft X einen Verweis Yenthalten.

Über die InnerException-Eigenschaft kann die Gruppe von Ausnahmen abgerufen werden, die zur aktuellen Ausnahme geführt hat.

Sie können eine neue Ausnahme erstellen, die eine frühere Ausnahme abfangen kann. Der Code, der die zweite Ausnahme behandelt, kann die zusätzlichen Informationen aus der früheren Ausnahme verwenden, um den Fehler besser zu behandeln.

Angenommen, es gibt eine Funktion, die eine Datei liest und die Daten aus dieser Datei formatiert. In diesem Beispiel wird die Datei ausgelöst, da der Code versucht, IOException die Datei zu lesen. Die Funktion fangen die IOException und löst eine FileNotFoundException. Dies IOException könnte in der InnerException Eigenschaft des FileNotFoundExceptionObjekts gespeichert werden, indem der Code aktiviert wird, der die Ursache des anfänglichen Fehlers FileNotFoundException untersucht.

Die InnerException Eigenschaft, die einen Verweis auf die innere Ausnahme enthält, wird auf die Initialisierung des Ausnahmeobjekts festgelegt.

Gilt für

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0