Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += Application_ThreadException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
#region Handle Exception
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
Exception ex = e.ExceptionObject as Exception;
if (ex != null) {
HandleException(ex);
} else {
string errorMessage = String.Format("Application UnhandledException:{0}", e);
ShowError(errorMessage);
LogError(errorMessage);
}
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) {
Exception ex = e.Exception as Exception;
if (ex != null) {
HandleException(ex);
} else {
string errorMessage = String.Format("Application ThreadException:{0}", e);
ShowError(errorMessage);
LogError(errorMessage);
}
}
static void HandleException(Exception error) {
if (error == null)
return;
ShowError(error);
LogError(error);
}
private static void ShowError(Exception error) {
if (error != null) {
XtraMessageBox.Show(error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private static void ShowError(string errorMessage) {
if (!String.IsNullOrEmpty(errorMessage)) {
XtraMessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private static void LogError(Exception error) {
if (error != null) {
ILog log = LogManager.GetLogger("ReflectionLayout");
log.Error(error.Message, error);
}
}
private static void LogError(string errorMessage) {
if (!String.IsNullOrEmpty(errorMessage)) {
ILog log = LogManager.GetLogger("ReflectionLayout");
log.Error(errorMessage);
}
}
#endregion