Partager via


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

CMemoryException, classe

Mémoire insuffisante.

CFileException, classe

Exception de fichier

CArchiveException, classe

Exception d'archive sérialisation/

CNotSupportedException, classe

Réponse à la demande de 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

Exceptions OLE

COleDispatchException, classe

Exceptions d'envoi (automation)

CUserException, classe

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

Gestion d'exceptions C++

Autres ressources

Comment faire pour : Créer mes propres Classes Exception personnalisées ?