• WPF全局逻辑未处理异常的异常处理


    public partial class App : Application
    {
        /// <summary>
        ///  异常处理
        /// </summary>
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            //捕获程序中未处理的异常(UI线程)
            Application.Current.DispatcherUnhandledException += App_DispatcherUnhandledException;
            //Task线程内未捕获异常处理事件
            TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
            // 捕获程序中未处理的异常(非UI线程异常)
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
        }
        /// <summary>
        /// 捕获程序中未处理的异常(UI线程)
        /// </summary>
        private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            Exception ex = e.Exception;
            if (ex.Message.Contains("因此无法排序数据集合"))
            {
                MessageBox.Show("您对\"序号\"等非数据列进行了无意义的排序!");
                e.Handled = true;
                return;
            };
    
            string str = ex.StackTrace;
            //Log4NetHelper.WriteError(typeof(Exception), "UI线程异常;异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message);
            e.Handled = true;
            MessageBox.Show("软件异常报错:"+ ex.Message,"软件未处理异常");
        }
    
        /// <summary>
        /// Task线程内未捕获异常处理事件
        /// </summary>
        private void TaskScheduler_UnobservedTaskException(object? sender, UnobservedTaskExceptionEventArgs e)
        {
            Exception ex = e.Exception;
            string str = ex.StackTrace;
            //Log4NetHelper.WriteError(typeof(Exception), "Task线程里异常;异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message);
        }
        /// <summary>
        /// 捕获程序中未处理的异常(非UI线程异常)
        /// </summary>
        private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Exception ex = e.ExceptionObject as Exception;
            string str = ex.StackTrace;
            //Log4NetHelper.WriteError(typeof(Exception), "非UI线程异常;异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message);
            MessageBox.Show("软件致命报错:" + ex.Message, "软件致命异常");
        }
    }
  • 相关阅读:
    Linux 进程学习(四) sigaction 函数
    Netty 编解码奥秘
    我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:护国小将,邀请大家一同入驻:https://www.oschina.net/sharingplan/apply
    Netty数据如何在 pipeline 中流动
    PLM系统安装四:主卷服务安装(FSC缓存服务器plm4IP:42.20)
    Linux系统信息和进程相关命令(CPU,内存,进程)
    SAN交换机配置的备份还原,固件升级
    san交换机的级联
    PLM系统安装五(2):Corporate服务安装plm1IP:42.106
    第三步:服务器虚拟化XenServer实施部署文档
  • 原文地址:https://www.cnblogs.com/qq2806933146xiaobai/p/16832285.html
Copyright © 2020-2023  润新知