このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Microsoft Edge をダウンロードする
Internet Explorer と Microsoft Edge の詳細情報
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
共通言語ランタイムは、既知の HRESULT を.NET Framework例外に変換し、COM オブジェクトがマネージド クライアントに意味のあるエラー情報を返すことができます。 HRESULT から例外へのマッピングは、アンマネージド クライアントに特定の HRESULT を返すことで、もう一方の方向にも機能します。 マッピングの詳細については、「
方法: HRESULT と例外をマップする」を
参照してください。
ランタイムは、不慣れな HRESULT (特定の対応する例外がない HRESULT) を検出すると、 クラスのインスタンスを
COMException
スローします。 この万能例外は、例外と同じメンバーを公開し、呼び出し先によって返される HRESULT を含むパブリック
ErrorCode
プロパティを継承します。 ランタイム (Visual Basic の
IErrorInfo
インターフェイスまたはオブジェクト、または
Err
場合によってはオペレーティング システムから取得) でエラー メッセージが使用できる場合は、呼び出し元にメッセージが返されます。 ただし、COM コンポーネントの開発者がエラー メッセージを含めなかった場合、ランタイムは、メッセージ文字列の代わりに 8 桁の HRESULT を返します。 HRESULT を使用すると、呼び出し元はジェネリック例外の原因を特定できます。
COMException 例外の処理
例外のトラブルシューティングに関するいくつかの考慮事項を次に
COMException
示します。
プロパティを確認する
ErrorCode
ランタイムで不慣れな HRESULT が検出され、例外がスロー
COMException
されると、
ErrorCode
このプロパティにはエラー メッセージが含まれます。エラー メッセージが使用できない場合は、8 桁の HRESULT 値が含まれます。 エラー メッセージまたは HRESULT 値は、例外の原因を特定するのに役立ちます。
HRESULT 値の一覧については、「
共通の HRESULT 値
」を参照してください。
遅延バインディング引数と Office オブジェクトMicrosoft
Office オブジェクトのメソッドに遅延バインディング引数Microsoft渡すと、
COMException
オブジェクトが COM オブジェクトの場合に例外がスローされることがあります。 遅延バインダーは、そのようなメソッド呼び出しには
ByRef
パラメーターが関連し、受け渡すプロパティに
set
アクセサーがあるものと想定します。 プロパティが存在しない場合、.NET Frameworkは例外を
MissingMethodException
生成します (HRESULT を使用
CORE_E_MISSINGMETHOD
)。 このような動作に対処するには、事前バインディングされたオブジェクトを使用するか、またはオブジェクトのプロパティの代わりに変数を渡します。
Visual Studio とホスティング プロセス
COM は、Visual Studio と
ホスティング プロセス
の間の通信に使用されます。 コードの実行前に使用されるため、
CoInitializeSecurity
を呼び出すと、この例外がスローされます。
場合によっては、管理者として Visual Studio を実行すると問題が解決される場合があります。
ホスティング プロセスを無効に
することもできます。
COMException 例外のスロー
クラスを
COMException
使用してアンマネージ クライアントに特定の HRESULT を返すことができますが、一般的な例外を使用するよりも、特定の.NET Framework例外をスローすることをお勧めします。 マネージド クライアントとアンマネージド クライアントは、.NET Framework オブジェクトを使用でき、HRESULT をマネージド呼び出し元にスローすることは、例外をスローするよりも理解しにくいと考えてください。