关于异常的疑难解答:System.Runtime.InteropServices.COMException

当 COM 方法调用返回一个无法识别的 HRESULT 时,将引发 COMException 异常。

相关提示

  • 检查该异常的 ErrorCode 属性,以确定 COM 对象返回的 HRESULT
    当运行时遇到不熟悉的 HRESULT 时,会引发 COMException 异常,该异常包含一个公共的 ErrorCode 属性,其中含有调用所返回的 HRESULT。 如果运行时有可用错误信息,则将相应信息返回调用方。 但是,如果 COM 组件开发人员未能包含错误信息,则运行时返回八位数的 HRESULT 代替消息字符串。 拥有 HRESULT 使调用方能够确定异常的原因。 有关更多信息,请参见 如何:映射 HRESULT 和异常

  • 禁用宿主进程。
    COM 用于在 Visual Studio 和宿主进程之间进行通信。 因为它是在代码运行前使用的,所以调用 CoInitializeSecurity 将引发此异常。

af1y26ew.collapse_all(zh-cn,VS.110).gif备注

公共语言运行时 (CLR) 将已知的 HRESULTS 转换成 .NET 异常,这使 COM 对象能够将有意义的错误信息返回托管客户端。 HRESULTS 到异常的映射还可以反向工作,即将特定的 HRESULT 返回到非托管客户端。

将后期绑定参数传递给 Microsoft Office 对象的方法以后,如果这些对象是 COM 对象,则可能引发 COMException 异常。 后期联编程序假定:此类方法调用涉及 ByRef 参数,并且所传递的属性具有 Set 访问器。 如果相应属性不具有该访问器,则 .NET Framework 生成一个 MissingMethodException 异常 (HRESULT CORE_E_MISSINGMETHOD)。 要处理此行为,请使用早期绑定对象或传递变量而不是对象的属性。

请参见

任务

如何:使用异常助手

参考

COMException

概念

处理 COM 互操作异常