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

更新:2007 年 11 月

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

相关提示

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

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

备注

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

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

请参见

任务

如何:使用异常助手查找有关异常的更多信息

概念

处理 COM Interop 异常

参考

COMException