IDebugStackFrame3::InterceptCurrentException

当调试器想要截获当前异常时,在当前堆栈帧上调用。

语法

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 信号。

另请参阅