Exception.InnerException Exception.InnerException Exception.InnerException Exception.InnerException Property

Definition

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.Gets the Exception instance that caused the current exception.

public:
 property Exception ^ InnerException { Exception ^ get(); };
public Exception InnerException { get; }
member this.InnerException : Exception
Public ReadOnly Property InnerException As Exception

Eigenschaftswert

Eine Instanz, die den Fehler beschreibt, der die aktuelle Ausnahme verursacht hat.An object that describes the error that caused the current exception. 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.The InnerException property returns the same value as was passed into the Exception(String, Exception) constructor, or null if the inner exception value was not supplied to the constructor. Diese Eigenschaft ist schreibgeschützt.This property is read-only.

Implementiert

Beispiele

Das folgende Beispiel zeigt das Auslösen und Abfangen einer Ausnahme, die auf eine innere Ausnahme verweist.The following example demonstrates throwing and catching an exception that references an inner exception.

using namespace System;

public ref class AppException: public Exception
{
public:
   AppException(String^ message ) : Exception(message)
   {}

   AppException(String^ message, Exception^ inner) : Exception(message, inner)
   {}
};

public ref class Example
{
public:
   void ThrowInner()
   {
      throw gcnew AppException("Exception in ThrowInner method.");
   }

   void CatchInner()
   {
      try {
         this->ThrowInner();
      }
      catch (AppException^ e) {
         throw gcnew AppException("Error in CatchInner caused by calling the ThrowInner method.", e);
      }
   }
};

int main()
{
   Example^ ex = gcnew Example();
   try {
      ex->CatchInner();
   }
   catch (AppException^ e) {
      Console::WriteLine("In catch block of Main method.");
      Console::WriteLine("Caught: {0}", e->Message);
      if (e->InnerException != nullptr)
         Console::WriteLine("Inner exception: {0}", e->InnerException);
   }
}
// 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()
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()
Public Class AppException : Inherits Exception
   Public Sub New(message As String)
      MyBase.New(message)
   End Sub
   
   Public Sub New(message As String, inner As Exception)
      MyBase.New(message, inner)
   End Sub
End Class

Public Class Example
   Public Shared Sub Main()
      Dim testInstance As New Example()
      Try
         testInstance.CatchInner()
      Catch e As AppException
         Console.WriteLine ("In catch block of Main method.")
         Console.WriteLine("Caught: {0}", e.Message)
         If e.InnerException IsNot Nothing Then
            Console.WriteLine("Inner exception: {0}", e.InnerException)
         End If
      End Try
   End Sub
   
   Public Sub ThrowInner()
      Throw New AppException("Exception in ThrowInner method.")
   End Sub
   
   Public Sub CatchInner()
      Try
         Me.ThrowInner()
      Catch e As AppException
         Throw New AppException("Error in CatchInner caused by calling the ThrowInner method.", e)
      End Try
   End Sub
End Class
' 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()

Hinweise

Wenn eine Ausnahme X wird als direktes Ergebnis einer vorhergehenden Ausnahme ausgelöst, Y, InnerException Eigenschaft X sollten enthalten einen Verweis auf Y.When an exception X is thrown as a direct result of a previous exception Y, the InnerException property of X should contain a reference to Y.

Über die InnerException-Eigenschaft kann die Gruppe von Ausnahmen abgerufen werden, die zur aktuellen Ausnahme geführt hat.Use the InnerException property to obtain the set of exceptions that led to the current exception.

Sie können eine neue Ausnahme erstellen, die eine früheren Ausnahme abfängt.You can create a new exception that catches an earlier exception. Der Code, Handles, die die zweite Ausnahme vornehmen, kann die zusätzlichen Informationen aus der früheren Ausnahme zu verwenden, um den Fehler besser zu behandeln.The code that handles the second exception can make use of the additional information from the earlier exception to handle the error more appropriately.

Nehmen wir an, dass eine Funktion, die eine Datei liest und formatiert die Daten aus dieser Datei vorhanden ist.Suppose that there is a function that reads a file and formats the data from that file. In diesem Beispiel ist als der Code versucht, die Datei zu lesen eine IOException ausgelöst.In this example, as the code tries to read the file, an IOException is thrown. Die Funktion fängt die IOException und löst eine FileNotFoundException.The function catches the IOException and throws a FileNotFoundException. Die IOException konnten in gespeichert werden die InnerException Eigenschaft der FileNotFoundException, aktivieren den Code, der erfasst die FileNotFoundException um die Ursache für den ursprünglichen Fehler zu untersuchen.The IOException could be saved in the InnerException property of the FileNotFoundException, enabling the code that catches the FileNotFoundException to examine the cause of the initial error.

Die InnerException -Eigenschaft, die einen Verweis auf die innere Ausnahme enthält, bei der Initialisierung des Ausnahmeobjekts festgelegt ist.The InnerException property, which holds a reference to the inner exception, is set upon initialization of the exception object.

Gilt für: