Partager via


Macro AbnormalTermination

Indique si le bloc __try d’un gestionnaire d’arrêt s’est terminé normalement. La fonction peut être appelée uniquement à partir du bloc __finally d’un gestionnaire d’arrêt.

Notes

Le compilateur d’optimisation Microsoft C/C++ interprète cette fonction comme une mot clé, et son utilisation en dehors de la syntaxe de gestion des exceptions appropriée génère une erreur du compilateur.

Syntaxe

BOOL AbnormalTermination(void);

Paramètres

Cette macro n’a aucun paramètre.

Valeur retournée

Si le bloc __try s’est arrêté anormalement, la valeur de retour est différente de zéro.

Si le bloc __try s’est terminé normalement, la valeur de retour est zéro.

Notes

Le bloc __try se termine normalement uniquement si l’exécution quitte le bloc séquentiellement après l’exécution de la dernière instruction du bloc. Les instructions (telles que return, goto, continue ou break) qui entraînent la sortie de l’exécution du bloc __try entraînent l’arrêt anormal du bloc. C’est le cas même si une telle instruction est la dernière instruction du bloc __try .

L’arrêt anormal d’un bloc de __try amène le système à effectuer une recherche en arrière dans toutes les trames de pile pour déterminer si des gestionnaires d’arrêt doivent être appelés. Cela peut entraîner l’exécution de centaines d’instructions. Il est donc important d’éviter l’arrêt anormal d’un bloc de __try en raison d’une instruction return, goto, continue ou break . Notez que ces instructions ne génèrent pas d’exception, même si l’arrêt est anormal.

Pour éviter un arrêt anormal, l’exécution doit se poursuivre jusqu’à la fin du bloc. Vous pouvez également exécuter l’instruction __leave . L’instruction __leave permet l’arrêt immédiat du bloc de __try sans entraîner un arrêt anormal et une pénalité de performance. Consultez la documentation de votre compilateur pour déterminer si l’instruction __leave est prise en charge.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]

Voir aussi

Fonctions de gestion des exceptions structurées

Vue d’ensemble de la gestion structurée des exceptions