IDebugStackFrame3::InterceptCurrentException

Вызывается отладчиком в текущем кадре стека, когда он хочет перехватывать текущее исключение.

Синтаксис

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

Параметры

dwFlags
[in] Задает различные действия. В настоящее время поддерживается только INTERCEPT_EXCEPTION_ACTION значение IEA_INTERCEPT и должно быть указано.

pqwCookie
[out] Уникальное значение, определяющее конкретное исключение.

Возвращаемое значение

В случае успешного выполнения возвращается S_OK; в противном случае возвращает код ошибки.

Ниже приведены наиболее распространенные возвращаемые ошибки.

Ошибка Описание
E_EXCEPTION_CANNOT_BE_INTERCEPTED Текущее исключение не может быть перехвачено.
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK Текущий кадр выполнения еще не искал обработчика.
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED Этот метод не поддерживается для этого кадра.

Замечания

При возникновении исключения отладчик получает контроль от времени выполнения в ключевых точках во время обработки исключений. В эти ключевые моменты отладчик может попросить текущий кадр стека, если кадр хочет перехватить исключение. Таким образом, перехваченное исключение по сути является обработчиком исключений на лету для кадра стека, даже если этот кадр стека не имеет обработчика исключений (например, блок try/catch в коде программы).

Когда отладчик хочет узнать, следует ли перехватывать исключение, он вызывает этот метод в текущем объекте кадра стека. Этот метод отвечает за обработку всех сведений об исключении. Если интерфейс IDebugStackFrame3 не реализован или InterceptStackException метод возвращает ошибку, отладчик продолжает обработку исключения обычно.

Примечание.

Исключения можно перехватывать только в управляемом коде, то есть при отладке программы в течение времени выполнения .NET. Конечно, сторонние средства реализации языка могут реализовываться InterceptStackException в собственных модулях отладки, если они так выбирают.

После завершения перехвата сигнализирует IDebugInterceptExceptionCompleteEvent2 .

См. также