Well in VB.Net, we use Try/Catch blocks to redirect any errors to a central handler. Looks something like this...
Try
Normal use code
More normal code
Error Prone code
More normal code
Catch ex as System.Exception
HandleError(ex)
'or even this line: Dim aex as New System.Exception("Error Prone code sucks: ", ex)
'then toss the new error back out: Throw aex
'that causes the next routine up, to recieve the error, so that it can hand it off to HandleError(ex)
End Try
Then my main error handling routine HandleError(byval ex as System.Exception) takes care of the message box.
how ever, EVERY routine that starts something needs to have a try catch block to capture these errors.
jvj