gestion des exceptions dans MFC
Cet article explique les mécanismes de gestion des exceptions disponibles dans MFC. Deux mécanismes sont disponibles :
Exceptions C++, disponibles dans la version 3,0 de MFC et ses versions ultérieures
Les macros exception de MFC, disponibles dans les versions 1,0 de MFC et ses versions ultérieures
Si vous écrivez une application à l'aide de MFC, vous devez utiliser un mécanisme C++. Utilisez le mécanisme basé sur une macro si votre application existante utilise déjà ce mécanisme de manière intensive.
Convertissez facilement le code existant pour utiliser des exceptions C++ au lieu de macros d'exception MFC. Les avantages de convertir votre code et des conseils pour cela sont décrites dans l'article exceptions : Convertir des macros d'exception MFC.
Si vous avez déjà une application développée à l'aide des macros exception MFC, vous pouvez continuer à utiliser les macros dans votre code existant, tout en utilisant des exceptions C++ dans votre nouveau code. L'article exceptions : Modifications apportées aux macros d'exception de la version 3,0 fournit des instructions pour effectuer cette opération.
Notes
Pour activer la gestion des exceptions C++ dans votre code, sélectionnez activer les exceptions C++ dans la page de génération de code dans le dossier C/C++ de la boîte de dialogue Pages de propriétés (Visual C++) du projet, ou utilisez l'option /GX du compilateur.La valeur par défaut est /GX, qui désactive la gestion des exceptions.
Cet article couvre les rubriques suivantes :
Quand utiliser les exceptions
Prise en charge des exceptions MFC
Plus de lecture sur les exceptions
Quand utiliser les 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 incorrecte, ou exécution anormale. Chaque catégorie est décrite ci-dessous.
Exécution normale
La fonction peut s'exécuter normalement et retourner. Certaines fonctions retournent un code de sortie pour l'appelant, qui indique le résultat de la fonction. Les codes de sortie possibles sont strictement définis pour la fonction et représentent la plage de résultats possibles de la fonction. Le code de sortie peut indiquer une réussite ou un échec ou même peut indiquer un type spécial d'échec qui est compris dans la plage régulière des attentes. Par exemple, une fonction d'état de fichier 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 sortie représente un des nombreux résultats attendus.
Exécution incorrecte
L'appelant commet une certaine erreur en passant des arguments à la fonction ou en appellant la fonction dans un environnement inapproprié. Cette situation entraîne une erreur, elle doit être détectée par une assertion lors du développement du programme. (Pour plus d'informations sur les assertions, consultez Assertions C/C++).
Exécution anormale
L'exécution anormale inclut des situations où les conditions extérieures au contrôle du programme, telles que la mémoire insuffisante ou les erreurs d'E/S, influencent les résultats de la fonction. Les situations anormales doivent être gérées en interceptant et en levant des exceptions.
L'Utilisation des exceptions est particulièrement appropriée pour l'exécution anormale.
Prise en charge des exceptions MFC
Si vous utilisez des exceptions C++ directement ou utilisez les macros exceptions de MFC, vous allez utiliser des objets dérivés de CException, classe ou CException qui peuvent être levés par l'infrastructure ou par votre application.
Le tableau ci-dessous indique les exceptions prédéfinies fournies par MFC.
Classe d'exceptions |
Signification |
---|---|
Mémoire insuffisante. |
|
Exception de fichier |
|
Exception d'archive sérialisation/ |
|
Réponse à la demande de 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) |
|
Exceptions OLE |
|
Exceptions d'envoi (automation) |
|
Exception qui avertit l'utilisateur avec un message, puis génère un CException, classe générique |
Notes
MFC prend en charge à la fois les exceptions C++ les macros exceptions MFC.MFC ne prend pas directement en charge les gestionnaires des exceptions structurées par Windows NT (SEH), comme décrit dans Gestion des exceptions structurées.
Plus de lecture sur les exceptions
Les articles suivants expliquent l'utilisation de la bibliothèque MFC pour la gestion d'exceptions :
Les éléments suivants comparent les macros exceptions de MFC par les mots clés d'exception C++ et expliquent comment vous pouvez ajuster votre code :
Voir aussi
Référence
Autres ressources
Comment faire pour : Créer mes propres Classes Exception personnalisées ?