(This post was previously published in http://dotmad.net/blog/ ) As a rule, in every application I write, I always implement both the Application.ThreadException and AppDomain.UnhandledException events, to catch exceptions which were not caught by a try..catch block. There are three reasons behind this: Present a custom failure message to the user (something like Twitter’s fail whale message) instead of the default ugly (and unclear) error dialog, i.e. “XXX .exe has encountered a problem and needs...