Wenn du Fehler abfängst, solltest du eine variable deklarieren und dir die Fehlernachricht ausgeben (z.B. über Trace-Ausgabe).

Zusätzlich kannst du Ereignisse des Conn-Objektes überwachen und auf ein Close der Verbindung reagieren.

Da bei OLEDB auch Nicht-.Net-Komponenten betroffen sind, ist ein Dispose des Conn-Objektes nach dem Close erforderlich.

Bei Verbindungen gibt es auch einen Connection-Pool der intern verwaltet wird.
Nach einem Close/Disconnect landet die Verbindung im Pool und wird beim nächsten Open wiederverwendet.

Aber wie oben geschrieben, wichtig ist die Fehlernachricht der Exception.