美好的一天,全部。
我一直在思考这个问题。我是以编程方式(在VB6中)筛选Outlook PST,索引其中的项目。我碰巧遇到了一个有点腐败的地方,这就是我遇到困难的地方。我的程序附加PST并开始向下钻取文件夹(olFolder)。这些Outlook创建的对象应该具有通常包含子文件夹(适当地命名为文件夹)的集合。
在执行我的代码期间,我递归调用进程文件夹函数来处理当前文件夹中的所有文件夹,但我有一个没有集合的文件夹。这会导致异常,因为我正在检查集合中的文件夹数量,并且无需检查。我理解如何检查对象的存在,但我很难检查是否存在集合和对象。有没有人遇到过这个?
更新
表达式:
If Not fl.Folders Is Nothing Then
最终也会抛出异常。我得到的例外情况如下:
Could not complete the operation because the service provider does not support it.
仅当尝试访问此损坏的文件夹时,该文件夹似乎具有FUBARed的文件夹集合属性。
FINAL Alrighty。在这种情况下,我只是要进行一些内联错误处理。
If Not Err.Number = -2147221246 Then
'Do the thing with the other thing
End If
Err.Clear
答案 0 :(得分:1)
如果您正在讨论是否obj.Coll.Count = 0
,请查看是否obj.Coll Is Nothing
。
答案 1 :(得分:0)
当我在vb6上工作web服务时,如果属性存在,我会检查一些情况。我用那种方法。
这很慢,但我希望能帮到你。
Public Function HasProperty(ByRef obj As Object, ByVal nameProperty As String) As Boolean
On Local Error GoTo hasProperty_Error
Dim Result
Result = CallByName(obj, nameProperty, VbGet)
hasProperty = True
hasProperty_Done:
Exit Function
hasProperty_Error:
If Err.Number = 438 Then
hasProperty = False
End If
Resume hasProperty_Done
End Function