IDebugStackFrame3:: InterceptCurrentException

调用由当前堆栈帧的调试器,则若要截获当前异常。

HRESULT InterceptCurrentException(
   INTERCEPT_EXCEPTION_ACTION dwFlags,
   UINT64*                    pqwCookie
);
int InterceptCurrentException(
   uint dwFlags, 
   out  ulong pqwCookie
);

参数

  • dwFlags
    [in] 指定不同的操作。 目前,仅 INTERCEPT_EXCEPTION_ACTIONIEA_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 终止状态。

请参见

参考

IDebugStackFrame3

INTERCEPT_EXCEPTION_ACTION

IDebugInterceptExceptionCompleteEvent2