共用方式為


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方法傳回任何錯誤,則調試程式會繼續正常處理例外狀況。

注意

例外狀況只能在 Managed 程式代碼中攔截,也就是偵錯的程式是在 .NET 運行時間下執行時。 當然,如果有選擇,第三方語言實作者可以在自己的偵錯引擎中實 InterceptStackException 作。

攔截完成之後, 會發出IDebugInterceptExceptionCompleteEvent2 的訊號。

另請參閱