添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

このブラウザーはサポートされなくなりました。

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 をマネージド呼び出し元にスローすることは、例外をスローするよりも理解しにくいと考えてください。