Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad Exception.InnerException

 

Publicado: octubre de 2016

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

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public Exception InnerException { get; }

Valor de propiedad

Type: System.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.

Cuando una excepción X se produce como consecuencia directa de una excepción anterior Y, 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 detecta una excepción anterior. El código que controla la segunda excepción puede utilizar la información adicional de la excepción anterior para controlar el error más adecuadamente.

Supongamos que hay una función que lee un archivo y formatea los datos del mismo En este ejemplo, como el código intenta leer el archivo, un IOException se produce. La función detecta el IOException y produce una FileNotFoundException. El IOException puede guardarse en el InnerException propiedad de la FileNotFoundException, que permita al código que detecta el FileNotFoundException para examinar la causa del error inicial.

El InnerException propiedad, que contiene una referencia a la excepción interna, se establece cuando se inicializa el objeto de excepción.

El siguiente ejemplo demuestra el lanzamiento y manejo de una excepción que hace referencia a una excepción interior.

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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: