异常处理.方式一

ZC:下面3个在 日志模块中可以搜索到

1、

        /// <summary>
        /// 初始化跟踪类数据
        /// </summary>
        /// <param name="initParam">初始化参数</param>
        public static void Start(TraceInitParam initParam)
        {
            // 初始化
            _logManage.Start(initParam);

            try
            {
                //处理未捕获的异常,始终将异常传送到 ThreadException 处理程序。忽略应用程序配置文件。   
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

                //订阅ThreadException事件,处理UI线程异常,处理方法为 Application_ThreadException,关于事件的相关知识就不在这叙述了  
                Application.ThreadException += Application_ThreadException;

                //订阅UnhandledException事件,处理非UI线程异常 ,处理方法为 CurrentDomain_UnhandledException  
                AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

                // 订阅 Wpf 的异常事件
                if (System.Windows.Application.Current != null)
                    System.Windows.Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
            }
            catch (Exception ex)
            {
                _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "########", ex);
            }
        }

2、

        #region # 输出异常消息 #

        /// <summary>
        /// 输出异常消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
        {
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "########", e);
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "########", e.Exception.Message);
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "########", e.Exception.StackTrace + "\r\n");
            
        }

        /// <summary>
        /// 输出异常消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "********", e.ToString());
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "********", e.ExceptionObject);
            if (e.ExceptionObject is Exception)
                _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "********", ((Exception)e.ExceptionObject).StackTrace + "\r\n");
        }

        /// <summary>
        /// 输出异常消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
        {
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "$$$$$$$$", e);
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "$$$$$$$$", e.Exception.Message);
            _logManage.TraceSaveCriticalFile(TraceEventType.Critical, "$$$$$$$$", e.Exception.StackTrace + "\r\n");
        }

        #endregion

3、

4、

5、

猜你喜欢

转载自www.cnblogs.com/csskill/p/12914914.html