Partage via


IDebugStackFrame3::InterceptCurrentException

Appelé par le débogueur sur le frame de pile actuel lorsqu’il souhaite intercepter l’exception actuelle.

Syntaxe

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

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é.

Voir aussi