Gestion des exceptions dans MFC
Cet article explique les mécanismes de gestion des exceptions disponibles dans MFC.Deux méthodes sont disponibles :
Exceptions C++, disponibles dans la version 3,0 de MFC et versions ultérieures
Les macros d'exception MFC, disponibles dans les versions 1,0 de MFC et versions ultérieures
Si vous écrivez une application à l'aide de MFC, vous devez utiliser le mécanisme de C++.Vous pouvez utiliser le mécanisme macro-basé si votre application utilise existante déjà ce mécanisme largement.
Vous pouvez facilement convertir le code existant pour utiliser des exceptions C++ au lieu des macros d'exception MFC.Les avantages de convertir votre code et indications pour ce faire sont décrits dans l'article Exceptions : Convertir des macros d'exception MFC.
Si vous avez déjà une application à l'aide de les macros d'exception MFC, vous pouvez continuer à utiliser ces macros dans votre code existant, tout en lors de l'utilisation des exceptions C++ dans votre nouveau code.L'article Exceptions : Modifications apportées aux macros d'exception de la version 3,0 fournit des indications pour ce faire.
[!REMARQUE]
Pour activer la gestion des exceptions C++ dans votre code, sélectionnez activent des exceptions C++ dans la page de génération de code dans le dossier C/C++ de la boîte de dialogue de Pages de propriétés (C++) du projet, ou utilisez l'option du compilateur /GX.La valeur par défaut est /GX –, et désactiver la gestion des exceptions.
Cet article décrit les rubriques suivantes :
Quand utiliser des exceptions
Prise en charge d'exception MFC
Informations supplémentaires sur les exceptions
Quand utiliser des exceptions
Trois catégories de résultats peuvent se produire lorsqu'une fonction est appelée pendant l'exécution du programme : exécution normale, exécution par erreur, ou exécution anormale.Chaque catégorie est décrite ci-dessous.
Exécution normale
La fonction peut exécuter normalement et retourner.Certaines fonctions retournent le code de résultat à l'appelant, qui indique le résultat de la fonction.Codes possibles de résultat ne sont pas définis pour la fonction et représentent la plage des effets possibles de la fonction.Le code de résultat peut indiquer le succès ou l'échec ou peut même indiquer qu'un type particulier d'échec qui se trouve dans la plage normale attentes.Par exemple, une fonction de fichier-état peut retourner un code qui indique que le fichier n'existe pas.Notez que le terme « code d'erreur » n'est pas utilisé car le code de résultat représente un de nombreux résultats attendus.
Exécution par
L'appelant est une certaine erreur lors de le passage des arguments de la fonction ou appelle la fonction dans un contexte non approprié.Cette situation provoque une erreur, et elle doit être détectée par une assertion au cours de le développement de programmes.(Pour plus d'informations sur les assertions, consultez l' Assertions.)
Exécution anormale
L'exécution anormale inclut des situations où les conditions en dehors de le contrôle de programme, tel que la mémoire insuffisante ou les erreurs d'E/S, influencent les résultats de la fonction.Des situations inutiles doivent être gérées en interceptant et en levant des exceptions.
Utilisation d'exceptions est particulièrement vrai pour l'exécution anormale.
Prise en charge d'exception MFC
Si vous utilisez des exceptions C++ directement ou utilisez les macros d'exception MFC, vous utiliserez CException, classe ou CException- les objets dérivés qui peuvent être levées par l'infrastructure ou par votre application.
Le tableau suivant indique les exceptions prédéfinies fournies par les MFC.
Classe d'exceptions |
Signification |
---|---|
Mémoire insuffisante |
|
Exception de fichier |
|
Exception d'archivage/sérialisation |
|
Réponse à la requête du service non pris en charge |
|
Exception d'allocation des ressources windows |
|
Exceptions de base de données (classes DAO) |
|
Exceptions de base de données (classes ODBC) |
|
OLE exceptions |
|
Exceptions d'expédition (automation) |
|
Exception qui avertit l'utilisateur avec un message, puis lève CException, classegénérique |
[!REMARQUE]
Exceptions MFC prend en charge C++ et les macros d'exception MFC.MFC ne prend pas directement en charge les gestionnaires d'exceptions structurés Windows (SEH) NT, comme indiqué dans gestion structurée des exceptions.
Informations supplémentaires sur les exceptions
Les éléments suivants expliquent l'utilisation de la bibliothèque MFC pour la remise d'exception :
Les éléments suivants comparent les macros d'exception MFC avec les mots clés d'exception C++ et expliquent comment vous pouvez adapter votre code :
Voir aussi
Référence
Autres ressources
Comment faire : Créez vos propres Classes d'Exception personnalisées ?