InnerException Propriété
Réduire la table des matières
Développer la table des matières
Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Propriété Exception.InnerException

 

Obtient l'instance Exception qui a provoqué l'exception actuelle.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

public Exception InnerException { get; }

Valeur de propriété

Type: System.Exception

Objet décrivant l'erreur qui a provoqué l'exception actuelle. La propriété InnerException retourne la même valeur que celle transmise au constructeur Exception(String, Exception), ou null si la valeur de l'exception interne n'a pas été fournie au constructeur. Cette propriété est en lecture seule.

When an exception X is thrown as a direct result of a previous exception Y, the P:System.Exception.InnerException property of X should contain a reference to Y.

Use the P:System.Exception.InnerException property to obtain the set of exceptions that led to the current exception.

You can create a new exception that catches an earlier exception. The code that handles the second exception can make use of the additional information from the earlier exception to handle the error more appropriately.

Suppose that there is a function that reads a file and formats the data from that file. In this example, as the code tries to read the file, an T:System.IO.IOException is thrown. The function catches the T:System.IO.IOException and throws a T:System.IO.FileNotFoundException. The T:System.IO.IOException could be saved in the P:System.Exception.InnerException property of the T:System.IO.FileNotFoundException, enabling the code that catches the T:System.IO.FileNotFoundException to examine the cause of the initial error.

The P:System.Exception.InnerException property, which holds a reference to the inner exception, is set upon initialization of the exception object.

The following example demonstrates throwing and catching an exception that references an inner exception.

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

Universal Windows Platform
Disponible depuis 4.5
.NET Framework
Disponible depuis 1.1
Portable Class Library
Pris en charge dans : portable .NET platforms
Silverlight
Disponible depuis 2.0
Windows Phone Silverlight
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher:
© 2016 Microsoft