共用方式為


System.Runtime.InteropServices.COMException 類別

本文提供此 API 參考文件的補充備註。

類別 COMException 是從 COM 方法呼叫傳回無法辨識的 HRESULT 時所擲回的例外狀況。

Common Language Runtime 會將已知的 HRESULT 轉換為 .NET 例外狀況,讓 COM 物件可將有意義的錯誤資訊傳回給 Managed 用戶端。 HRESULT 到例外狀況對應也會以其他方向運作,方法是將特定的 HRESULT 傳回給 Unmanaged 用戶端。 如需對應詳細數據,請參閱 如何對應 HRESULT 和例外狀況

當運行時間遇到不熟悉的 HRESULT 時(缺少特定且對應的例外狀況的 HRESULT),它會擲回 類別的 COMException 實例。 這個全用途例外狀況會公開與任何例外狀況相同的成員,並繼承包含被呼叫者傳回之 HRESULT 的公用 ErrorCode 屬性。 如果運行時間可以使用錯誤訊息(從 Visual Basic 中的 IErrorInfo 介面或 Err 物件取得,或在某些情況下從操作系統取得),訊息會傳回給呼叫端。 但是,如果 COM 組件開發人員無法納入錯誤訊息,執行階段則會傳回八位元的 HRESULT 取代訊息字串。 具有 HRESULT 可讓呼叫端判斷泛型例外狀況的原因。

處理 COMException 例外狀況

以下是針對例外狀況進行疑難解答的一 COMException 些考慮。

檢查屬性 ErrorCode 當運行時間遇到不熟悉的 HRESULT 並擲回 COMException 例外狀況時,屬性會包含錯誤訊息, ErrorCode 或如果錯誤訊息無法使用,則為八位數的 HRESULT 值。 錯誤訊息或 HRESULT 值可協助您判斷例外狀況的原因。

如需 HRESULT 值的清單,請參閱 一般 HRESULT 值

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

COM 可用來在Visual Studio與 裝載進程之間進行通訊。 因為在程式代碼執行之前會使用它,所以對 CoInitializeSecurity呼叫會導致擲回這個例外狀況。 在某些情況下,以 管理員 istrator 身分執行 Visual Studio 可能會解決此問題。 您也可以 停用裝載進程

擲回 COMException 例外狀況

雖然您可以使用 類別 COMException 將特定 HRESULT 傳回給 Unmanaged 用戶端,但擲回特定 .NET 例外狀況比使用泛型例外狀況更好。 請考慮 Managed 用戶端和非受控用戶端可以使用您的 .NET 物件,並將 HRESULT 擲回給 Managed 呼叫端比擲回例外狀況更不理解。