Gestion des exceptions dans MSVC

Une exception est une condition d’erreur, éventuellement en dehors du contrôle du programme, qui empêche le programme de se poursuivre selon son chemin d’exécution normal. Certaines opérations, notamment la création d’objets, l’entrée/sortie de fichier et les appels de fonction effectués à partir d’autres modules, sont toutes des sources potentielles d’exceptions, même lorsque votre programme s’exécute correctement. Un code robuste vous permet d‘anticiper les exceptions et de les gérer. Pour détecter des erreurs logiques, utilisez des assertions plutôt que des exceptions (consultez Utilisation d’assertions).

Types d’exceptions

Le compilateur Microsoft C++ (MSVC) prend en charge trois types de gestion des exceptions :

  • Gestion des exceptions C++

    Pour la plupart des programmes C++, vous devez utiliser la gestion des exceptions C++. Il est de type sécurisé et garantit que les destructeurs d’objets sont appelés pendant le déroulement de la pile.

  • Gestion structurée des exceptions

    Windows fournit son propre mécanisme d’exception, appelé gestion des exceptions structurées (SEH). Il n’est pas recommandé pour la programmation C++ ou MFC. Utilisez SEH uniquement dans les programmes C non MFC.

  • Exceptions MFC

    Depuis la version 3.0, MFC a utilisé des exceptions C++. Il prend toujours en charge ses anciennes macros de gestion des exceptions, qui sont similaires aux exceptions C++ sous forme. Pour obtenir des conseils sur le mélange de macros MFC et d’exceptions C++, consultez Exceptions : Utilisation de macros MFC et d’exceptions C++.

Utilisez une option de compilateur /EH pour spécifier le modèle de gestion des exceptions à utiliser dans un projet C++. La gestion des exceptions C++ standard (/EHsc) est la valeur par défaut dans les nouveaux projets C++ dans Visual Studio.

Nous vous déconseillons de combiner les mécanismes de gestion des exceptions. Par exemple, n’utilisez pas d’exceptions C++ avec la gestion structurée des exceptions. L’utilisation exclusive de la gestion des exceptions C++ rend votre code plus portable et vous permet de gérer les exceptions de n’importe quel type. Pour plus d’informations sur les inconvénients de la gestion des exceptions structurées, consultez Gestion des exceptions structurées.

Contenu de cette section

Voir aussi

Référence
du langage C++ x64 pour la gestion des
exceptions (C++/CLI et C++/CX)