我正在与COM对象(Microsoft ADO Recordset对象)进行通信。在某种情况下,记录集将返回失败的(即否定的)HRESULT
,并带有消息:
在集合中找不到项目 对应于所请求的名称或 序
我知道这个错误消息的含义,知道它为什么会发生,以及我如何修复它。但我知道这些事情,因为我读了这条消息,幸运的是,这是我理解的一种语言。
现在我想特别处理这个例外。 COM对象抛出了HRESULT
0x800A0CC1
在理想的世界中,当我尝试访问时,Microsoft会记录what errors can be returned:
records.Fields.Items( index )
索引无效。但他们没有;他们最常说的是可以发生错误,即:
如果项目无法在中找到对象 对应于索引的集合 参数,发生错误。
鉴于没有记录返回的错误代码,当我试图捕获异常时,是否正确处理特定的返回代码“0x800A0CC1”:
在集合中找不到项目 对应于所请求的名称或 序
由于Microsoft没有记录错误代码,因此他们技术上将来会更改错误代码。
答案 0 :(得分:4)
他们确实记录了此错误代码,但很难找到: ErrorValueEnum:
adErrItemNotFound 3265 -2146825023 0x800A0CC1 Item cannot be found in the collection that corresponds to the requested name or ordinal.
..所以,由于它是一个记录错误的代码,因此明确地测试它是安全的。
答案 1 :(得分:3)
您必须决定是否值得承担风险,但我相信Microsoft不太可能更改此错误代码。检查这个特定的错误代码是一个非常强大的方法。
答案 2 :(得分:1)
是的,没关系。它实际上是一个记录在案的错误代码,尽管找到它们并不容易。它在msdao15.idl Windows SDK文件中定义,adErrItemNotFound(错误3265)