Ler em inglês

Compartilhar via


Exception.InnerException Propriedade

Definição

Obtém a instância Exception que causou a exceção atual.

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

Valor da propriedade

Exception

Um objeto que descreve o erro que causou a exceção atual. A propriedade InnerException retornará o mesmo valor passado para o construtor Exception(String, Exception), ou null, se o valor de exceção interno não foi fornecido para o construtor. Esta propriedade é somente para leitura.

Implementações

Exemplos

O exemplo a seguir demonstra a geração e captura de uma exceção que faz referência a uma exceção 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()

Comentários

Quando uma exceção X é lançada como resultado direto de uma exceção Yanterior, a InnerException propriedade deve X conter uma referência a Y.

Use a InnerException propriedade para obter o conjunto de exceções que levou à exceção atual.

Você pode criar uma nova exceção que captura uma exceção anterior. O código que manipula a segunda exceção pode usar as informações adicionais da exceção anterior para lidar com o erro de forma mais adequada.

Suponha que haja uma função que lê um arquivo e formate os dados desse arquivo. Neste exemplo, enquanto o código tenta ler o arquivo, um IOException é gerado. A função captura e IOException gera um FileNotFoundException. Pode IOException ser salvo na InnerException propriedade do FileNotFoundException, permitindo que o código que captura a FileNotFoundException causa do erro inicial seja examinado.

A InnerException propriedade, que contém uma referência à exceção interna, é definida após a inicialização do objeto de exceção.

Aplica-se a

Produto Versões
.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