Ten artykuł został przetłumaczony przez maszynę. Aby wyświetlić jego treść w języku angielskim, zaznacz pole wyboru Angielski. Możesz też wyświetlić angielski tekst w okienku wyskakującym, przesuwając wskaźnik myszy nad konkretny tekst”.
Tłumaczenie
Angielski

Właściwość Exception.InnerException

.NET Framework (current version)
 

Data opublikowania: październik 2016

Pobiera Exception wystąpienia, który spowodował bieżący wyjątek.

Przestrzeń nazw:   System
Zestaw:  mscorlib (w mscorlib.dll)

public Exception InnerException { get; }

Wartość właściwości

Type: System.Exception

Obiekt, który opisuje błąd, który spowodował bieżący wyjątek. InnerException Właściwość zwraca taką samą wartość jak został przekazany do Exception(String, Exception) Konstruktor, lub null jeśli nie podano wartości wewnętrznego wyjątku do konstruktora. Ta właściwość jest tylko do odczytu.

Gdy wyjątek X zgłaszany jako bezpośredni wynik poprzedniego wyjątku Y, InnerException Właściwość X powinna zawierać odwołanie do Y.

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

Można utworzyć nowy wyjątek, który przechwytuje wyjątek wcześniej. Kod, użyj uchwytów przez drugi wyjątek dodatkowych informacji z wcześniejszych wyjątek do odpowiedniej obsługi błędu.

Załóżmy, że funkcja, która odczytuje plik i formatuje dane z tego pliku. W tym przykładzie jako kod próbuje odczytać pliku IOException jest zgłaszany. Przechwytuje funkcję IOException i zgłasza FileNotFoundException. IOException Można zapisać w InnerException właściwości FileNotFoundException, włączanie kod, który przechwytuje FileNotFoundException zbadać przyczynę błędu początkowego.

InnerException Ustawiono właściwość, która zawiera odwołanie do wyjątek wewnętrzny, po zainicjowaniu obiekt wyjątku.

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

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

Platforma uniwersalna systemu Windows
Dostępne od 8
.NET Framework
Dostępne od 1.1
Biblioteka klas przenośnych
Obsługiwane w: przenośne platformy .NET
Silverlight
Dostępne od 2.0
Windows Phone Silverlight
Dostępne od 7.0
Windows Phone
Dostępne od 8.1
Powrót do początku
Pokaż: