Exception.InnerException Propiedad

Definición

Obtiene la instancia Exception que produjo la excepción actual.

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

Valor de propiedad

Exception

Objeto que describe el error que causó la excepción actual. La propiedad InnerException devuelve el mismo valor que se pasó al constructor Exception(String, Exception) o null si no se suministró el valor de la excepción interna al constructor. Esta propiedad es de sólo lectura.

Implementaciones

Ejemplos

En el ejemplo siguiente se muestra cómo iniciar y detectar una excepción que hace referencia a una excepción interna.

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

Comentarios

Cuando se produce una excepción X como resultado directo de una excepción Yanterior, la InnerException propiedad de X debe contener una referencia a Y.

Utilice la propiedad InnerException para obtener el conjunto de excepciones que dieron lugar a la excepción actual.

Puede crear una nueva excepción que capture una excepción anterior. El código que controla la segunda excepción puede hacer uso de la información adicional de la excepción anterior para controlar el error de forma más adecuada.

Supongamos que hay una función que lee un archivo y da formato a los datos de ese archivo. En este ejemplo, como el código intenta leer el archivo, se produce una IOException excepción . La función detecta y IOException produce una FileNotFoundExceptionexcepción . IOException se puede guardar en la InnerException propiedad de FileNotFoundException, lo que permite que el código que capture para FileNotFoundException examinar la causa del error inicial.

La InnerException propiedad , que contiene una referencia a la excepción interna, se establece al inicializar el objeto de excepción.

Se aplica a

Produto Versións
.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