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