WinForm Exception handler
Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { // handle the exception raised by main threads Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); // handle the exception raised by additional threads AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } static void Application_ThreadException (object sender, System.Threading.ThreadExceptionEventArgs e) {// All exceptions thrown by the main thread ShowExceptionDetails(e.Exception); } static void CurrentDomain_UnhandledException (object sender, UnhandledExceptionEventArgs e) {// All exceptions thrown by additional threads ShowExceptionDetails(e.ExceptionObject as Exception); } static void ShowExceptionDetails(Exception Ex) {// logging of exception details MessageBox.Show(Ex.Message, Ex.TargetSite.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); } } }