例外狀況處理 (Visual Studio SDK)
下列描述擲回例外狀況時所發生的程序。
例外狀況處理流程
當第一次擲回例外狀況,但在偵錯的程式中的例外狀況處理常式處理該例外狀況之前,偵錯引擎 (DE) 會將 IDebugExceptionEvent2 傳送至工作階段偵錯管理員 (SDM) 作為停止事件。 只有當例外狀況的設定 (在偵錯套件的 [例外狀況] 對話方塊中指定) 指定使用者想要在第一機會例外狀況通知停止時,才會傳送
IDebugExceptionEvent2
。SDM 會呼叫 IDebugExceptionEvent2::GetException 以取得例外狀況的屬性。
偵錯套件會呼叫 IDebugExceptionEvent2::CanPassToDebuggee 來決定要向使用者呈現的選項。
偵錯套件會開啟第一機會例外狀況對話方塊,詢問使用者要如何處理例外狀況。
如果使用者選擇繼續,SDM 會呼叫 IDebugExceptionEvent2::CanPassToDebuggee。
如果方法傳回 S_OK,會呼叫 IDebugExceptionEvent2::PassToDebuggee。
-或-
如果方法傳回 S_FALSE,則正在偵錯的程式會獲得第二次機會來處理例外狀況。
如果偵錯的程式對於第二機會例外狀況沒有處理常式,DE 會將
IDebugExceptionEvent2
作為 EVENT_SYNC_STOP 傳送至 SDM。偵錯套件會開啟第一機會例外狀況對話方塊,詢問使用者要如何處理例外狀況。
偵錯套件會呼叫 IDebugExceptionEvent2::CanPassToDebuggee 來決定要向使用者呈現的選項。
偵錯套件會開啟第二機會例外狀況對話方塊,詢問使用者要如何處理例外狀況。
如果方法傳回 S_OK,則會呼叫
IDebugExceptionEvent2::PassToDebuggee
。