添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
苦闷的手套  ·  javascript拖放文件 ...·  1 年前    · 
帅气的企鹅  ·  C++ map 如何清空 ...·  1 年前    · 
傻傻的野马  ·  Azure built-in roles ...·  1 年前    · 
public ref class COMException : Exception
public ref class COMException : System::Runtime::InteropServices::ExternalException
public class COMException : Exception
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class COMException : System.Runtime.InteropServices.ExternalException
type COMException = class
    inherit Exception
type COMException = class
    inherit ExternalException
[<System.Serializable>]
type COMException = class
    inherit ExternalException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type COMException = class
    inherit ExternalException
Public Class COMException
Inherits Exception
Public Class COMException
Inherits ExternalException
COMException

Common Language Runtime 會將已知的 HRESULT 轉換成.NET Framework例外狀況,讓 COM 物件可將有意義的錯誤資訊傳回給受控用戶端。 HRESULT 與例外狀況對應的運作方式是將特定 HRESULT 傳回給 Unmanaged 用戶端。 如需對應詳細資料,請參閱 如何:對應 HRESULT 和例外狀況

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

處理 COMException 例外狀況

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

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

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

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

Visual Studio和裝載進程
COM 是用來在Visual Studio與 裝載進程 之間進行通訊。 因為它會在程式碼執行之前使用,所以 對 CoInitializeSecurity 的呼叫會導致擲回這個例外狀況。

在某些情況下,以系統管理員身分執行Visual Studio可能會解決此問題。 您也可以 停用裝載進程

擲回 COMException 例外狀況

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