处理 COM+ 管理错误

使用 COMAdmin 对象时生成的错误以两种方式报告,如下所示:

  • 使用特定于 COMAdmin 库的错误代码。
  • 使用特殊 ErrorInfo 集合中可用的扩展错误信息。

错误代码

可以像处理任何 COM 错误消息一样处理管理错误代码。 在 Microsoft Visual C++ 中,这些代码作为 HRESULT 值返回。 在 Microsoft Visual Basic 中,它们被作为可以捕获的异常引发。 对于 C++ 程序员,COM+ 管理错误代码在 Winerror.h 中定义。 对于 Visual Basic 程序员,可通过 Visual Basic IDE 获取。

ErrorInfo 集合

当错误发生时,由某种失败代码发出信号,根据错误的性质,可以获得更详细的信息。 COMAdmin 对象在没有详细报告的情况下很难确定故障的确切原因的情况下提供扩展信息,例如进行多次读写操作。

例如,当在 COMAdminCatalogCollection 对象上使用诸如 PopulateSaveChanges 的方法时,可以为集合中的每个项读取或写入数据。 可能会出现复杂的错误,并且很难根据单个数字错误代码进行诊断。 因此,COMAdmin 库通过一个特殊的集合来生成扩展错误信息。

当扩展错误信息可用时,会被放置在与发生错误的原始集合相关的 ErrorInfo 集合中。 若要检索错误报告,请获取与原始集合相关的 ErrorInfo 集合,查看所包含的项。 可以通过在 COMAdminCatalogCollection 上使用 GetCollection,检索 ErrorInfo 集合,将第二个参数留空,通常在其中指定父项的 Key 属性。

收到错误时,必须立即获取并填充失败的集合的 ErrorInfo 集合,而无需对该集合执行任何其他操作。 否则,ErrorInfo 集合将重置,并且不会详细说明该失败。

ErrorInfo 集合中的项公开了特殊的错误报告属性 MajorRef 和 MinorRef,其中详细说明了错误的特定原因。 有关详细信息,请参阅 ErrorInfo

COM+ 事务管理操作

使用 COM+ 管理目录的介绍性示例

COMAdmin 对象概述

检索 COM+ 目录中的集合

设置属性并将更改保存到 COM+ 目录