Quand et pourquoi devriez-vous utiliser le mot-clé __try en C ?
C Try/Catch/Finally Blocks et le mot-clé __try
Structured Exception Handling (SEH) est le mécanisme de gestion des exceptions au niveau du système d'exploitation. pris en charge par Windows. Les compilateurs pour Windows utilisent généralement SEH pour implémenter les exceptions C.
Alors que les mots-clés C throw et catch gèrent exclusivement les exceptions C, le compilateur Microsoft Visual C (MSVC) fournit des mots-clés __try et __sauf non standard pour gérer les exceptions SEH.
Bloc __try :
Le bloc __try non standard définit la portée dans laquelle une exception peut se produire, tout comme un bloc try en C . Il est suivi des blocs __sauf et __finally.
__sauf Bloc :
Le bloc __sauf est similaire à un bloc catch en C mais offre plus de flexibilité. Il possède une expression de filtre d'exception qui évalue si une exception active doit être gérée.
Bloc __finally :
Le bloc __finally contient du code qui s'exécute après toute gestion d'exception. C'est similaire à un bloc enfin en C#, mais pas directement équivalent en C standard.
Cas d'utilisation des blocs __try :
Les exceptions SEH peuvent inclure celles générées par le fonctionnement système, code interopérable utilisant SEH ou code géré utilisant le code d'exception ".NET". Pour détecter ces exceptions en C, les blocs __try doivent être utilisés avec les blocs __sauf.
Exemple de programme :
L'exemple de programme montre les exceptions SEH et comment les destructeurs C peuvent être appelé pendant le déroulement de l'exception SEH.
#include <windows.h> #include <iostream> class Example { public: ~Example() { std::cout << "destructed" << std::endl; } }; int filterException(int code, PEXCEPTION_POINTERS ex) { std::cout << "Filtering " << std::hex << code << std::endl; return EXCEPTION_EXECUTE_HANDLER; } int main() { __try { Example e; int* p = 0; *p = 42; // intentially generating a processor fault } __except (filterException(GetExceptionCode(), GetExceptionInformation())) { std::cout << "caught" << std::endl; } return 0; }
Sortie :
Filtering c0000005 destructed caught
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Gulc: Cibliothèque C construite à partir de zéro

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Utilisation distincte et partage de phrases

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?

Comment fonctionne la bibliothèque de modèle standard C (STL)?
