IDebugStackFrame3::InterceptCurrentException
Appelé par le débogueur sur le frame de pile actuel lorsqu’il souhaite intercepter l’exception actuelle.
Syntaxe
Paramètres
dwFlags
[in] Spécifie différentes actions. Actuellement, seule la valeur IEA_INTERCEPT
INTERCEPT_EXCEPTION_ACTION est prise en charge et doit être spécifiée.
pqwCookie
[out] Valeur unique identifiant une exception particulière.
Valeur de retour
Si elle réussit, retourne S_OK ; sinon, retourne un code d’erreur.
Voici les retours d’erreur les plus courants.
Erreur | Description |
---|---|
E_EXCEPTION_CANNOT_BE_INTERCEPTED |
L’exception actuelle ne peut pas être interceptée. |
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK |
Le frame d’exécution actuel n’a pas encore été recherché pour un gestionnaire. |
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED |
Cette méthode n’est pas prise en charge pour ce frame. |
Notes
Lorsqu’une exception est levée, le débogueur obtient le contrôle du temps d’exécution aux points clés pendant le processus de gestion des exceptions. Pendant ces moments clés, le débogueur peut demander au frame de pile actuel si le frame souhaite intercepter l’exception. De cette façon, une exception interceptée est essentiellement un gestionnaire d’exceptions à la volée pour une trame de pile, même si cette trame de pile n’a pas de gestionnaire d’exceptions (par exemple, un bloc try/catch dans le code du programme).
Lorsque le débogueur souhaite savoir si l’exception doit être interceptée, elle appelle cette méthode sur l’objet frame de pile actuel. Cette méthode est chargée de gérer tous les détails de l’exception. Si l’interface IDebugStackFrame3 n’est pas implémentée ou si la InterceptStackException
méthode retourne une erreur, le débogueur continue de traiter l’exception normalement.
Remarque
Les exceptions peuvent être interceptées uniquement dans le code managé, c’est-à-dire lorsque le programme en cours de débogage est en cours d’exécution sous l’heure d’exécution de .NET. Bien sûr, les implémenteurs de langage tiers peuvent implémenter InterceptStackException
dans leurs propres moteurs de débogage s’ils le choisissent.
Une fois l’interception terminée, un IDebugInterceptExceptionCompleteEvent2 est signalé.