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

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) を生成します。 このような動作に対処するには、事前バインディングされたオブジェクトを使用するか、またはオブジェクトのプロパティの代わりに変数を渡します。

参照

処理手順

方法: 例外処理アシスタントを使用する

関連項目

COMException

概念

COM 相互運用の例外の処理