I think I would just keep a variable that counts how many times the exception get hits after opening a connection. If it's the first time the exception has been hit, instead of erroring out it would try again. The second time it would assume the error was something else and show me the error message.
----------- Update ----------------
Here is roughly what I am talking about:
Dim intErrorCount As Integer = 0
Try
Catch ex As Exception
Select Case intErrorCount
Case 0
Case Else
MsgBox("Error: " & ex.Message)
End Select
intErrorCount += 1
End Try
Why does this not work for you? What is happening when you try to access the DB and the connection isn't really open? It just errors out, right?