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 呼叫端較不了解擲回例外狀況。