Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Exception.InnerException-Eigenschaft

 

Veröffentlicht: Oktober 2016

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

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public Exception InnerException { get; }

Eigenschaftswert

Type: System.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.

Wenn eine Ausnahme X die als direktes Ergebnis einer vorhergehenden Ausnahme ausgelöst wird Y, die InnerException -Eigenschaft des X sollte enthalten einen Verweis auf Y.

Ü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 abfängt. Der Code, der Handles, die zweite Ausnahme vornehmen kann, die zusätzlichen Informationen der früheren Ausnahme verwenden, um den Fehler besser zu behandeln.

Nehmen wir an, dass eine Funktion, die eine Datei liest und formatiert die Daten aus dieser Datei vorhanden ist. In diesem Beispiel, wenn der Code versucht, die Datei zu lesen eine IOException ausgelöst. Die Funktion fängt die IOException und löst eine FileNotFoundException. Die IOException konnte gespeichert werden die InnerException Eigenschaft der FileNotFoundException, Code, abfängt, Aktivieren der FileNotFoundException um die Ursache des ursprünglichen Fehlers untersuchen.

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

Im folgende Beispiel demonstriert das Auslösen und Abfangen einer Ausnahme, die eine innere Ausnahme verweist.

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.CatchInner()

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: