Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source

Exception.InnerException, propriété

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
Instance de Exception décrivant l'erreur qui a provoqué l'exception en cours. La propriété InnerException retourne la même valeur que celle qui a été passée dans le constructeur, ou une référence Null (Nothing en Visual Basic) si la valeur de l'exception interne n'a pas été fournie au constructeur. Cette propriété est en lecture seule.

Implémentations

_Exception.InnerException

Lorsqu'une exception X est levée comme conséquence directe d'une exception précédente Y, la propriété InnerException de X doit comprendre une référence à Y.

Utilisez la propriété InnerException pour obtenir le jeu d'exceptions ayant provoqué l'exception en cours.

Vous pouvez créer une nouvelle exception qui intercepte une exception antérieure. Le code qui gère la deuxième exception peut utiliser les informations supplémentaires de l'exception antérieure pour gérer l'erreur de manière plus appropriée.

Soit une fonction lisant un fichier et mettant en forme les données de ce fichier. Dans cet exemple, IOException est levée lorsque le code essaie de lire le fichier. Cette fonction intercepte IOException et lève FileNotFoundException. IOException peut être enregistré dans la propriété InnerException de FileNotFoundException, ce qui permet au code qui intercepte FileNotFoundException d'examiner la cause de l'erreur initiale.

La propriété InnerException, qui contient une référence à l'exception interne, est définie lors de l'initialisation de l'objet exception.

L'exemple suivant illustre la levée et l'interception d'une exception qui fait référence à une exception interne.


using System;
public class MyAppException:ApplicationException 
{
   public MyAppException (String message) : base (message) 
   {}
   public MyAppException (String message, Exception inner) : base(message,inner) {}	
   }
public class ExceptExample 
{
   public void ThrowInner () 
   {
   throw new MyAppException("ExceptExample inner exception");
   }
   public void CatchInner() 
   {
      try 
      {
      this.ThrowInner();
      }
         catch (Exception e) 
         {
         throw new MyAppException("Error caused by trying ThrowInner.",e);
         }
      }
   }
public class Test 
{
   public static void Main() 
   {
   ExceptExample testInstance = new ExceptExample();
      try 
      {
      testInstance.CatchInner();
      }
         catch(Exception e) 
         {
         Console.WriteLine ("In Main catch block. Caught: {0}", e.Message);
         Console.WriteLine ("Inner Exception is {0}",e.InnerException);
         }
      }
}


Ce code génère la sortie suivante :

In Main
  catch block. Caught: Error caused by trying ThrowInner. Inner Exception is
  MyAppException: ExceptExample inner exception at ExceptExample.ThrowInner() at
  ExceptExample.CatchInner()

.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Pris en charge dans :

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft