You indicate you're catching the exceptions; are you perhaps leaving some variables around that were only partially initialized? That could cause problems later in the application.
That is...
XmlDocument document = new XmlDocument(); collection.Add(document); try { document.Load(filename); } catch(Exception ex) { // Log exception. }
In the above code the XmlDocument object is never pulled from the collection so it remains for further iteration/modification/manipulation.
Also, if you're expecting these errors it is more than acceptable to attempt to load an XML document and catch - and discard - the exception if it occurs.
private bool PoorMansDocumentValidator(){ try { XmlDocument document = new XmlDocument(filename); return true; } catch(XmlException xex) { return false; }}
The best way to handle the situation is to have a schema and validate the XML file against that schema using an XmlValidatingReader. Do the files you're looking for have a specified schema available?