Partager via


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

CMemoryException, classe

Mémoire insuffisante

CFileException, classe

Exception de fichier

CArchiveException, classe

Exception d'archivage/sérialisation

CNotSupportedException, classe

Réponse à la requête du service non pris en charge

CResourceException, classe

Exception d'allocation des ressources windows

CDaoException, classe

Exceptions de base de données (classes DAO)

CDBException, classe

Exceptions de base de données (classes ODBC)

COleException, classe

OLE exceptions

COleDispatchException, classe

Exceptions d'expédition (automation)

CUserException, classe

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

Gestion des exceptions C++

Autres ressources

Comment faire : Créez vos propres Classes d'Exception personnalisées ?