共用方式為


例外狀況處理 (Visual Studio SDK)

下列描述擲回例外狀況時所發生的程序。

例外狀況處理流程

  1. 當第一次擲回例外狀況,但在偵錯的程式中的例外狀況處理常式處理該例外狀況之前,偵錯引擎 (DE) 會將 IDebugExceptionEvent2 傳送至工作階段偵錯管理員 (SDM) 作為停止事件。 只有當例外狀況的設定 (在偵錯套件的 [例外狀況] 對話方塊中指定) 指定使用者想要在第一機會例外狀況通知停止時,才會傳送 IDebugExceptionEvent2

  2. SDM 會呼叫 IDebugExceptionEvent2::GetException 以取得例外狀況的屬性。

  3. 偵錯套件會呼叫 IDebugExceptionEvent2::CanPassToDebuggee 來決定要向使用者呈現的選項。

  4. 偵錯套件會開啟第一機會例外狀況對話方塊,詢問使用者要如何處理例外狀況。

  5. 如果使用者選擇繼續,SDM 會呼叫 IDebugExceptionEvent2::CanPassToDebuggee

    • 如果方法傳回 S_OK,會呼叫 IDebugExceptionEvent2::PassToDebuggee

      -或-

      如果方法傳回 S_FALSE,則正在偵錯的程式會獲得第二次機會來處理例外狀況。

  6. 如果偵錯的程式對於第二機會例外狀況沒有處理常式,DE 會將 IDebugExceptionEvent2 作為 EVENT_SYNC_STOP 傳送至 SDM。

  7. 偵錯套件會開啟第一機會例外狀況對話方塊,詢問使用者要如何處理例外狀況。

  8. 偵錯套件會呼叫 IDebugExceptionEvent2::CanPassToDebuggee 來決定要向使用者呈現的選項。

  9. 偵錯套件會開啟第二機會例外狀況對話方塊,詢問使用者要如何處理例外狀況。

  10. 如果方法傳回 S_OK,則會呼叫 IDebugExceptionEvent2::PassToDebuggee