共用方式為


疑難排解例外狀況:System.Runtime.InteropServices.COMException

更新:2007 年 11 月

COM 方法呼叫傳回無法辨認的 HRESULT 時,就會擲回 COMException 例外狀況。

相關秘訣

  • 請檢查該例外狀況的 ErrorCode 屬性,以判斷 COM 物件所傳回的 HRESULT
    當執行階段遇到不熟悉的 HRESULT 時,就會擲回包含公用 ErrorCode 屬性的 COMException 例外狀況,這個屬性包含了該呼叫所傳回的 HRESULT。如果執行階段能取得錯誤訊息,該訊息則會被傳回呼叫端。但是,如果 COM 組件開發人員無法納入錯誤訊息,執行階段則會傳回八位元的 HRESULT 取代訊息字串。取得 HRESULT 可讓呼叫端判斷例外狀況發生的原因。如需詳細資訊,請參閱 HOW TO:對應 HRESULT 和例外狀況

  • 停用裝載處理序。
    COM 是用於進行 Visual Studio 和裝載處理序之間的溝通。因為它會在程式碼執行之前使用,因此對 CoInitializeSecurity 呼叫就會擲回這個例外狀況。

備註

Common Language Runtime (CLR) 會將已知的 HRESULTS 轉換為 .NET 例外狀況,讓 COM 物件能將有意義的錯誤訊息傳回 Managed 用戶端。HRESULT 與例外狀況的對應也能以另一種方向運作,將特定的 HRESULTS 傳回 Unmanaged 用戶端。

將晚期繫結的參數傳遞至 Microsoft Office 物件的方法時,這個物件若是 COM 物件,則可能會擲回 COMException 例外狀況。晚期繫結器 (Binder) 會假設這個方法呼叫包含 ByRef 參數,並假設您傳遞的屬性具 有 Set 存取子。如果屬性未具有此存取子,.NET Framework 就會產生 MissingMethodException 例外狀況 (HRESULT CORE_E_MISSINGMETHOD)。若要解決這個行為,請使用早期繫結的物件,或傳遞變數而不要傳遞物件的屬性。

請參閱

工作

HOW TO:使用例外狀況助理尋找例外狀況的詳細資訊

概念

處理 COM Interop 例外狀況

參考

COMException