Exception.InnerException Właściwość

Definicja

Exception Pobiera wystąpienie, które spowodowało bieżący wyjątek.

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

Wartość właściwości

Exception

Obiekt opisujący błąd, który spowodował bieżący wyjątek. Właściwość InnerException zwraca tę samą wartość, która została przekazana do konstruktora lub null jeśli wartość wyjątku Exception(String, Exception) wewnętrznego nie została dostarczona do konstruktora. Ta właściwość jest tylko do odczytu.

Implementuje

Przykłady

W poniższym przykładzie pokazano zgłaszanie i przechwytywanie wyjątku, który odwołuje się do wyjątku wewnętrznego.

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

Uwagi

Gdy wyjątek X jest zgłaszany bezpośrednio w wyniku poprzedniego wyjątku Y, InnerException właściwość elementu X powinna zawierać odwołanie do Yelementu .

Użyj właściwości , InnerException aby uzyskać zestaw wyjątków, które doprowadziły do bieżącego wyjątku.

Możesz utworzyć nowy wyjątek, który przechwytuje wcześniejszy wyjątek. Kod, który obsługuje drugi wyjątek, może korzystać z dodatkowych informacji z wcześniejszego wyjątku w celu bardziej odpowiedniego obsługi błędu.

Załóżmy, że istnieje funkcja, która odczytuje plik i formatuje dane z tego pliku. W tym przykładzie, gdy kod próbuje odczytać plik, IOException jest zgłaszany. Funkcja przechwytuje element IOException i zgłasza element FileNotFoundException. Element IOException można zapisać we InnerException właściwości FileNotFoundExceptionobiektu , umożliwiając kod, który przechwytuje FileNotFoundException element w celu zbadania przyczyny początkowego błędu.

Właściwość InnerException , która zawiera odwołanie do wyjątku wewnętrznego, jest ustawiana podczas inicjowania obiektu wyjątku.

Dotyczy

Produkt Wersje
.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