体面地处理程序的未捕获异常

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值