Číst v angličtině

Sdílet prostřednictvím


Exception.InnerException Vlastnost

Definice

Exception Získá instanci, která způsobila aktuální výjimku.

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

Hodnota vlastnosti

Exception

Objekt, který popisuje chybu, která způsobila aktuální výjimku. Vlastnost InnerException vrátí stejnou hodnotu, jakou byla předána do konstruktoru Exception(String, Exception) , nebo null pokud vnitřní hodnota výjimky nebyla zadána konstruktoru. Tato vlastnost je jen ke čtení.

Implementuje

Příklady

Následující příklad ukazuje vyvolání a zachycení výjimky, která odkazuje na vnitřní výjimku.

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

Poznámky

Pokud je výjimka X vyvolán jako přímý výsledek předchozí výjimky Y, InnerException vlastnost X by měla obsahovat odkaz na Y.

InnerException Vlastnost slouží k získání sady výjimek, které vedly k aktuální výjimce.

Můžete vytvořit novou výjimku, která zachytí předchozí výjimku. Kód, který zpracovává druhou výjimku, může použít další informace z předchozí výjimky ke zpracování chyby vhodnějším způsobem.

Předpokládejme, že existuje funkce, která čte soubor a formátuje data z daného souboru. V tomto příkladu se kód pokusí soubor přečíst, vyvolá se.IOException Funkce zachytí IOException a vyvolá .FileNotFoundException Může IOException být uložen ve InnerException vlastnosti FileNotFoundException, což umožňuje kód, který zachytí FileNotFoundException , aby prozkoumal příčinu počáteční chyby.

Vlastnost InnerException , která obsahuje odkaz na vnitřní výjimku, je nastavena při inicializaci objektu výjimky.

Platí pro

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