共用方式為


IDebugStackFrame3::InterceptCurrentException

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

目前的堆疊框架上偵錯工具在其想要攔截目前的例外狀況時呼叫。

語法

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

注意

例外狀況可以被攔截只能在 managed 程式碼,也就是執行.NET 執行階段偵錯程式時。 當然,可以實作協力廠商語言實作人員InterceptStackException人員可以選擇自己的偵錯引擎中。

攔截完成之後, IDebugInterceptExceptionCompleteEvent2收到信號。

另請參閱

IDebugStackFrame3
INTERCEPT_EXCEPTION_ACTION
IDebugInterceptExceptionCompleteEvent2