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 :
-
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.
-
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
Meilleures pratiques C++ modernes pour la gestion des exceptions et des erreurs
Comment interfacer entre du code exceptionnel et non exceptionnel
Voir aussi
Référence
du langage C++ x64 pour la gestion des
exceptions (C++/CLI et C++/CX)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour