次の方法で共有


例外のトラブルシューティング : System.Runtime.InteropServices.COMException

更新 : 2007 年 11 月

COMException 例外は、COM メソッドの呼び出しによって、認識されない HRESULT が返された場合にスローされます。

関連するヒント

  • 例外の ErrorCode プロパティをチェックし、COM オブジェクトから返された HRESULT を確認します。
    ランタイムで特異な HRESULT が発生すると、COMException 例外をスローします。この例外には、呼び出しによって返された HRESULT を含むパブリック ErrorCode プロパティがあります。ランタイムがエラー メッセージを利用できる場合は、呼び出し元にエラー メッセージが返されます。ただし、COM コンポーネントの開発者がエラー メッセージを含めなかった場合、ランタイムは、メッセージ文字列の代わりに 8 桁の HRESULT を返します。HRESULT を返すことで、呼び出し元が例外の原因を確認できます。詳細については、「方法 : HRESULT に例外を割り当てる」を参照してください。

  • ホスト プロセスを無効にします。
    Visual Studio とホスト プロセス間の通信には、COM が使用されます。COM は、コードを実行する前に使用されるため、CoInitializeSecurity を呼び出すと、この例外がスローされます。

解説

共通言語ランタイム (CLR) は、既知の HRESULT を .NET 例外に変換します。これにより、COM オブジェクトが、わかりやすいエラー情報をマネージ クライアントに返すことができます。HRESULT と例外の割り当ては、逆方向でも機能します。この場合は、特定の HRESULT をアンマネージ クライアントに返します。

遅延バインディング パラメータを Microsoft Office オブジェクトのメソッドに渡したときに、そのオブジェクトが COM オブジェクトの場合、COMException 例外がスローされることがあります。遅延バインダは、そのようなメソッド呼び出しには ByRef パラメータが関連し、受け渡すプロパティに Set アクセサがあるものと想定します。このアクセサがプロパティに含まれていない場合、.NET Framework は、MissingMethodException 例外 (HRESULT CORE_E_MISSINGMETHOD) を生成します。このような動作に対処するには、事前バインディングされたオブジェクトを使用するか、またはオブジェクトのプロパティの代わりに変数を渡します。

参照

処理手順

方法 : Exception Assistant を使用して例外についての情報を調べる

概念

COM 相互運用の例外の処理

参照

COMException