Exception, classe (System)

Bibliothèque de classes .NET Framework 
Exception, classe 

Représente les erreurs qui se produisent lors de l'exécution de l'application.

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

SyntaxeSyntaxe


Visual Basic (Déclaration)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
Public Class Exception
    Implements ISerializable, _Exception


Visual Basic (Utilisation)
Dim instance As Exception


C#
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
public class Exception : ISerializable, _Exception


C++
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::None)] 
public ref class Exception : ISerializable, _Exception


J#
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public class Exception implements ISerializable, _Exception


JScript
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public class Exception implements ISerializable, _Exception
NotesNotes

Cette classe est la classe de base pour toutes les exceptions. Lorsqu'une erreur se produit, le système ou l'application en cours d'exécution la signale en levant une exception qui contient des informations sur l'erreur. Une fois levée, une exception est gérée par l'application ou par le gestionnaire d'exceptions par défaut.

Le Common Language Runtime fournit un modèle de gestion d'exceptions basé sur la représentation des exceptions sous forme d'objets ainsi que sur la séparation du code du programme et du code de gestion des exceptions en blocs try et en blocs catch, respectivement. Il peut y avoir un ou plusieurs blocs catch, chaque bloc étant destiné à gérer un type particulier d'exception, ou un seul bloc destiné à intercepter une exception plus spécifique qu'un autre bloc.

Si une application gère les exceptions qui se produisent lors de l'exécution d'un bloc de code de l'application, le code doit être placé dans une instruction try. Le code de l'application contenu dans une instruction try est un bloc try. Le code de l'application qui gère les exceptions levées par un bloc try est placé dans une instruction catch ; ce bloc est un bloc catch. Zéro ou plusieurs blocs catch sont associés à un bloc try et chaque bloc catch comporte un filtre de types qui détermine les types d'exceptions à gérer.

Lorsqu'une exception se produit dans un bloc try, le système recherche les blocs catch associés dans l'ordre dans lequel ils apparaissent dans le code de l'application, jusqu'à ce qu'il trouve un bloc catch qui gère l'exception en question. Un bloc catch gère une exception de type T si le filtre de types du bloc catch spécifie T ou tout autre type dont T dérive. Le système arrête la recherche après avoir trouvé le premier bloc catch qui gère l'exception. C'est pourquoi, dans le code de l'application, un bloc catch qui gère un type particulier doit être spécifié avant un bloc catch qui gère ses types de base, comme le montre l'exemple donné après cette section. Un bloc catch qui gère System.Exception est spécifié en dernier.

Si aucun des blocs catch associés au bloc try en cours ne gère l'exception concernée et que le bloc try en cours est imbriqué dans d'autres blocs try dans l'appel en cours, la recherche porte sur les blocs catch associés au bloc try englobant suivant. Si aucun bloc catch n'est trouvé pour gérer l'exception, le système effectue une recherche dans les niveaux d'imbrication précédents dans l'appel en cours. Si aucun bloc catch n'est trouvé pour l'exception dans l'appel en cours, l'exception remonte dans la pile des appels et la recherche d'un bloc catch qui gère l'exception est effectuée dans le frame de pile précédent. La recherche continue dans la pile des appels jusqu'à ce que l'exception soit gérée ou tant que des frames sont présents dans la pile des appels. Si le haut de la pile des appels est atteint sans qu'un bloc catch gérant l'exception n'ait été trouvé, le gestionnaire d'exceptions par défaut gère l'exception et l'application s'arrête.

Les types d'exceptions prennent en charge les fonctionnalités suivantes :

  • Texte explicite décrivant l'erreur. Lorsqu'une exception se produit, le runtime informe l'utilisateur par le biais d'un message textuel de la nature de l'erreur et suggère une action pour résoudre le problème. Ce message textuel est contenu dans la propriété Message de l'objet exception. Lors de la création de l'objet exception, vous pouvez passer au constructeur une chaîne textuelle qui décrit en détail cette exception particulière. Si aucun argument de message d'erreur n'est fourni au constructeur, le message d'erreur par défaut est utilisé.

  • État de la pile des appels lors de la levée de l'exception. La propriété StackTrace conserve une trace de la pile qui peut être utilisée pour déterminer l'endroit où l'erreur se produit dans le code. La trace de la pile répertorie toutes les méthodes appelées ainsi que les numéros de ligne, dans le fichier source, où les appels ont été réalisés.

Il existe deux catégories d'exceptions sous la classe de base Exception :

  • les classes d'exceptions prédéfinies du Common Language Runtime, dérivées de SystemException ;

  • les classes d'exceptions de l'application définies par l'utilisateur, dérivées de ApplicationException.

Exception inclut plusieurs propriétés qui permettent d'identifier l'emplacement du code, le type, le fichier d'aide et la raison de l'exception : StackTrace, InnerException, Message, HelpLink, HResult, Source, TargetSite et Data.

Lorsqu'une relation de causalité existe entre deux exceptions ou plus, la propriété InnerException conserve ces informations. L'exception externe est levée en réponse à cette exception interne. Le code qui gère l'exception externe peut utiliser les informations de l'exception interne antérieure pour gérer l'erreur de manière plus appropriée. Des informations supplémentaires sur l'exception peuvent être stockées dans la propriété Data.

La chaîne du message d'erreur passée au constructeur lors de la création de l'objet exception doit être localisée et peut être fournie à partir d'un fichier de ressources en utilisant ResourceManager. Pour plus d'informations sur la localisation des ressources, consultez la vue d'ensemble de l'espace de noms System.Resources et Empaquetage et déploiement de ressources.

Pour fournir à l'utilisateur des informations complètes sur la raison de la levée de l'exception, la propriété HelpLink peut contenir une URL (ou URN) pointant vers un fichier d'aide.

Exception utilise HRESULT COR_E_EXCEPTION, dont la valeur est 0x80131500.

Pour obtenir la liste des valeurs initiales des propriétés d'une instance de Exception, consultez les constructeurs Exception.

Considérations sur les performances

Une quantité importante de ressources système et de temps d'exécution est utilisée lorsque vous levez ou gérez une exception. Levez des exceptions uniquement pour gérer des conditions vraiment extraordinaires, et non pas pour gérer des événements ou un contrôle de flux prévisibles. Par exemple, votre application peut raisonnablement lever une exception si l'argument d'une méthode n'est pas valide, car vous voulez appeler votre méthode avec des paramètres valides. Un argument de méthode non valide signifie que quelque chose d'anormal s'est produit. Inversement, ne levez pas d'exception si l'entrée d'utilisateur n'est pas valide, car vous pouvez vous attendre à ce que les utilisateurs entrent parfois des données non valides. Dans ce cas, fournissez un mécanisme de nouvelle tentative pour permettre aux utilisateurs de corriger leur entrée.

Levez uniquement des exceptions pour des conditions anormales, interceptez les exceptions dans un gestionnaire d'exceptions à usage général qui s'applique à la plus grande part de votre application, et non dans un gestionnaire qui s'applique à une exception spécifique. Le raisonnement propre à cette approche est que la plupart des erreurs peuvent être gérées par validation et le code de gestion des erreurs à proximité de l'erreur ; aucune exception ne doit être levée ni interceptée. Le gestionnaire d'exceptions à usage général intercepte les exceptions vraiment inattendues, levées n'importe où dans l'application.

De plus, ne levez pas d'exception lorsqu'un code de retour est suffisant ; ne convertissez pas de code de retour en exception ; et n'interceptez pas régulièrement d'exception, ignorez-la, puis continuez le processus.

ExempleExemple

L'exemple de code suivant illustre un bloc catch défini pour gérer les erreurs ArithmeticException. Ce bloc catch intercepte également les erreurs DivideByZeroException, car DivideByZeroException dérive de ArithmeticException et aucun bloc catch n'est défini explicitement pour les erreurs DivideByZeroException.



Visual Basic
Imports System

Class ExceptionTestClass
   
   Public Shared Sub Main()
      Dim x As Integer = 0
      Try
         Dim y As Integer = 100 / x
      Catch e As ArithmeticException
         Console.WriteLine("ArithmeticException Handler: {0}", e.ToString())
      Catch e As Exception
         Console.WriteLine("Generic Exception Handler: {0}", e.ToString())
      End Try
   End Sub 'Main
End Class 'ExceptionTestClass


C#
using System;

class ExceptionTestClass 
{
public static void Main() 
{
   int x = 0;
      try 
      {
         int y = 100/x;
      }
         catch (ArithmeticException e) 
         {
         Console.WriteLine("ArithmeticException Handler: {0}", e.ToString());
         }
            catch (Exception e) 
            {
            Console.WriteLine("Generic Exception Handler: {0}", e.ToString());
            }
      }    
}


C++
using namespace System;
int main()
{
   int x = 0;
   try
   {
      int y = 100 / x;
   }
   catch ( ArithmeticException^ e ) 
   {
      Console::WriteLine( "ArithmeticException Handler: {0}", e );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Generic Exception Handler: {0}", e );
   }

}



J#
import System.*;

class ExceptionTestClass
{
    public static void main(String[] args)
    {
        int x = 0;
        try {
            int y = 100 / x;
        }
        catch (ArithmeticException e) {
            Console.WriteLine("ArithmeticException Handler: {0}", e.ToString());
        }
        catch (System.Exception e) {
            Console.WriteLine("Generic Exception Handler: {0}", e.ToString());
        }
    } //main
} //ExceptionTestClass

Le code C# génère la sortie suivante :



ArithmeticException Handler: System.DivideByZeroException: Attempted to divide by zero. at ExceptionTestClass.Main()

Le code Visual Basic génère la sortie suivante :



ArithmeticException Handler: System.OverflowException: Exception of type System.OverflowException was thrown. at ExceptionTestClass.Main()
Hiérarchie d'héritageHiérarchie d'héritage
System.Object
  System.Exception
     Classes dérivées
Sécurité des threadsSécurité des threads
Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Plates-formesPlates-formes

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

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

Informations de versionInformations de version

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Voir aussiVoir aussi

Ces informations proviennent du site de http://msdn2.microsoft.com
Source de cette page : http://msdn2.microsoft.com/fr-fr/library/system.exception.aspx

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

7 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-4370
Document créé le 18/10/06 03:55, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http://www.gaudry.be/dotnet-rf-system.exception.html Document affiché 5 fois ce mois de Mai.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,42 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Le seul mauvais choix est l’absence de choix.

Amélie Nothomb
 
l'infobrol
Nous sommes le Jeudi 31 Mai 2012, 23:19, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)