IDebugStackFrame3::InterceptCurrentException
当调试器想要截获当前异常时,在当前堆栈帧上调用。
语法
参数
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 信号。