Gestion de l’arrêt
Un gestionnaire d’arrêt garantit qu’un bloc de code spécifique est exécuté chaque fois que le flux de contrôle quitte un corps de code protégé particulier. Un gestionnaire d’arrêt se compose des éléments suivants.
- Un corps de code protégé
- Bloc de code d’arrêt à exécuter lorsque le flux de contrôle quitte le corps protégé
Les gestionnaires d’arrêt sont déclarés dans la syntaxe propre au langage. À l’aide du compilateur d’optimisation Microsoft C/C++, ils sont implémentés à l’aide de __try et de __finally. Pour plus d’informations, consultez Syntaxe du gestionnaire.
Le corps de code protégé peut être un bloc de code, un ensemble de blocs imbriqués ou une procédure ou une fonction entière. Chaque fois que le corps protégé est exécuté, le bloc de code d’arrêt est exécuté. La seule exception à cela est lorsque le thread se termine pendant l’exécution du corps protégé (par exemple, si la fonction ExitThread ou ExitProcess est appelée à partir du corps protégé).
Le bloc d’arrêt est exécuté lorsque le flux de contrôle quitte le corps protégé, que le corps protégé se soit terminé normalement ou anormalement. Le corps protégé est considéré comme s’étant terminé normalement lorsque la dernière instruction du bloc est exécutée et que le contrôle se poursuit de manière séquentielle dans le bloc d’arrêt. L’arrêt anormal se produit lorsque le flux de contrôle quitte le corps protégé en raison d’une exception, ou en raison d’une instruction de contrôle telle que return, goto, break ou continue. La fonction AbnormalTermination peut être appelée à partir du bloc d’arrêt pour déterminer si le corps protégé s’est terminé normalement.