Search code examples
vb6outlooknullreferenceexception

Check for COM Object Collection Propertys Existence


I have been pondering this one for a while. I am programatically (in VB6) sifting through Outlook PSTs, indexing items that are in them. I have happened on to one that is a little corrupted and this is where I am having difficulty. My program attaches the PST and starts drilling down through the folders (olFolder). These Outlook created objects are supposed to have a collection that would normally hold sub folders (appropriately named Folders).

During the execution of my code I recursively call the process folder function to process all folders in the current folder, but I have one that does not have a collection. This causes an exception because I am checking the count of folders in the collection and there is nothing to check. I understand how to check for the existence of an object, but I am having a hard time checking for the existence of a collection in and object.

Update

The expression:

If Not fl.Folders Is Nothing Then

ends up throwing the exception too. The exception that I am getting is the following:

Could not complete the operation because the service provider does not support it.

This is only when trying to access this corrupted folder which appears to have a Folders Collection Property that is FUBARed.

Final

Alright; in this case I am just going to put in some in-line error handling.

If Not Err.Number = -2147221246 Then
'Do the thing with the other thing
End If
Err.Clear

Solution

  • If you are talking about checking whether obj.Coll.Count = 0, then see if obj.Coll Is Nothing.