Sun, August 15, 2004, 08:35 AM under
dotNET
We should be trapping possible exceptions in various places with the
try..catch mechanism, but all software contains bugs and so will your code; in that scenario you still want to catch the exception (log it, present custom GUI to user, etc). To do this on the full Framework 1.1 we use a try..catch around the entry point (typically
Application.Run), hook into
System.Windows.Forms.Application.ThreadException (for GUI thread exceptions) and hook into
AppDomain.CurrentDomain.UnhandledException for other thread exceptions. We need to perform
all 3 actions.
There is a good article on the subject in June's edition of MSDN Magazine on the above, go read
it.
To finish the desktop story, check out the registry entry described
here. Note that, if there is no global error handler mechanism, any exceptions on background threads are swallowed if not explicitly caught. This means the application does not exit or put up a JIT debugging window, it just continues running in whatever state it is in!
Next time we'll look at how things are different with the Compact Framework.