Gestion structurée des exceptions (C++)
La prise en charge Windows 95, Windows 98, et Windows 2000 (anciennement Windows NT) une approche fiable à la gestion des exceptions, la gestion structurée des exceptions appelée, qui inclut la coopération du système d'exploitation mais a également une prise en charge directe dans le langage de programmation.
Grammaire
essai-excepté-instruction :
instruction composée d'__try
instruction composée d'__except ( expression )
Notes
Une exception est un événement qui est inattendue ou perturbe la capacité du processus de poursuivre normalement.Les exceptions peuvent être détectées par les deux matériel et les logiciels.Les exceptions de matériel incluent la division par zéro et le dépassement de capacité d'un type numérique.Les exceptions de logiciels incluent ceux que vous détectez et indique au système en appelant la fonction de RaiseException et les situations spéciale détectées par windows.
Vous pouvez écrire du code plus fiable avec la gestion structurée des exceptions.Vous pouvez vérifier que les ressources, telles que les blocs de mémoire et des fichiers, sont fermées correctement dans l'événement de l'arrêt inattendu.Vous pouvez également gérer les problèmes spécifiques, par exemple une mémoire insuffisante, au code structuré concis qui ne s'appuie pas sur des instructions d' goto ou le test élaboré de codes de retour.
Les instructions d' instruction try-except et de try-finally sont une extension Microsoft du langage C qui permet aux applications au contrôle du volume d'un programme après que les événements qui termineraient normalement l'exécution.
[!REMARQUE]
La gestion structurée des exceptions fonctionne avec les fichiers sources C et C++.Toutefois, il n'est pas conçu pour C++.Bien que les destructeurs des objets locaux soient appelés si vous utilisez la gestion structurée des exceptions dans un programme C++ (si vous utilisez /EHsc), vous pouvez vous assurer que votre code est plus portable à l'aide de la gestion des exceptions C++.Le mécanisme de Gestion des exceptions C++ est plus flexible, parce qu'il peut gérer les exceptions de tout type.
Il existe deux mécanismes de gestion structurée des exceptions :
gestionnaires d'exceptions, qui peut répondre ou ferme l'exception
gestionnaires de terminaisons, qui sont appelés lorsqu'une exception provoque l'arrêt dans un bloc de code
Ces deux types de gestionnaires sont distincts, mais ils sont étroitement liés à l'aide d'un processus appelé « dérouler la pile. » Lorsqu'une exception se produit, les fenêtres recherche le gestionnaire d'exceptions le plus récemment installé actif.Le gestionnaire peut effectuer l'une des trois choses :
contrôle de passage à d'autres gestionnaires (échouer pour identifier l'exception).
Identifiez mais ferme l'exception.
Identifiez et gérer l'exception.
Le gestionnaire d'exceptions qui identifie l'exception peut ne pas être dans la fonction qui s'exécutait lorsque l'exception s'est produite.Dans certains cas elles peuvent être dans une fonction beaucoup plus élevée sur la pile.La fonction en cours de exécution, ainsi que toutes les fonctions sur le frame de pile, sont terminées.pendant ce processus, la pile « est déroulée » : les variables locales des fonctions complètes, à moins qu'elles soient statique, sont désactivées de la pile.
Comme elle déroule la pile, le système d'exploitation appelle tous les gestionnaires de terminaisons que vous avez entrés pour chaque fonction.L'utilisation d'un gestionnaire de terminaisons vous donne une occasion de nettoyer les ressources qui sinon demeureraient ouvertes en raison de la anormal.si vous avez écrit une section critique, vous pouvez quitter dans le gestionnaire de terminaisons.Si le programme accède s'arrêter, vous pouvez effectuer d'autres tâches de gestion interne telles que fermer et des fichiers temporaires de supprimer.
Si vous avez des modules C qui utilisent la gestion structurée des exceptions, ils peuvent être combinés avec les modules C++ qui utilisent la gestion des exceptions C++.Consultez différences de gestion des exceptions.
Pour plus d'informations, consultez :