COM:如何处理特定的异常?

Ian*_*oyd 6 com exception-handling ado

我正在与COM对象(Microsoft ADO Recordset对象)进行通信.在某种情况下,记录集将返回失败(即否定)HRESULT,并显示以下消息:

无法在与请求的名称或序号对应的集合中找到项目

我知道这个错误信息意味着什么,知道它为什么会发生,以及我如何解决它.但我知道这些事情,因为我读了这条消息,幸运的是,这是我理解的一种语言.

现在我想特别处理这个例外.COM对象引发了一个HRESULT

0x800A0CC1
Run Code Online (Sandbox Code Playgroud)

在理想的世界中,Microsoft会记录我尝试访问时可以返回的错误:

records.Fields.Items( index )
Run Code Online (Sandbox Code Playgroud)

索引无效.但他们没有; 他们最多说的是可能会发生错误,即:

如果Item无法在与Index参数对应的集合中找到对象,则会发生错误.

鉴于没有记录返回的错误代码,当我试图捕获异常时,处理特定的返回代码"0x800A0CC1" 是否正确:

无法在与请求的名称或序号对应的集合中找到项目

由于Microsoft没有记录错误代码,因此他们将来在技术上会对其进行更改.

JBR*_*son 4

他们确实记录了此错误代码,但很难找到: ErrorValueEnum

adErrItemNotFound    3265 -2146825023 0x800A0CC1    Item cannot be found in the collection that corresponds to the requested name or ordinal.
Run Code Online (Sandbox Code Playgroud)

..因此,由于其已记录错误代码,因此可以安全地显式测试它。