博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinForm程序全局捕捉异常处理办法
阅读量:5737 次
发布时间:2019-06-18

本文共 3512 字,大约阅读时间需要 11 分钟。

如何全局捕捉Winform程序异常呢,当然是从程序启动入口的Program类下的Main()方法定义了,下面看下这个类怎么写的吧

static class Program    {        static string RunFormFullName        {            get            {                string setRunFormFullName = CIPACE.Sys.Configuration.RunFormFullName;                if (setRunFormFullName == null)                    setRunFormFullName = DigiForm.SETRUNFORMFULLNAME;                return setRunFormFullName;            }        }        ///         ///   应用程序的主入口点。        ///         public static ApplicationContext context;        [STAThread]        private static void Main()        {            try            {                //处理未捕获的异常                   Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);                //处理UI线程异常                   Application.ThreadException += Application_ThreadException;                //处理非UI线程异常                   AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;                var aProcessName = Process.GetCurrentProcess().ProcessName;                if ((Process.GetProcessesByName(aProcessName)).GetUpperBound(0) > 0)                {                    MessageBox.Show(@"系统已经在运行中,如果要重新启动,请从进程中关闭...", @"系统警告", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);                }                else                {                    Application.EnableVisualStyles();                    Application.SetCompatibleTextRenderingDefault(false);                    context = new ApplicationContext();                    Application.Idle += Application_Idle; //注册程序运行空闲去执行主程序窗体相应初始化代码                    Application.Run(context);                }            }            catch (Exception ex)            {                LogNet.Log.WriteLog("Main", ex);                MessageBox.Show("系统出现异常:" + (ex.Message + " " + (ex.InnerException != null && ex.InnerException.Message != null && ex.Message != ex.InnerException.Message ? ex.InnerException.Message : ""))+",请重启程序。");                                DigiForm digiForm = new DigiForm();                digiForm.UpdateAppSettings(DigiForm.RUNFORMFULLNAME, DigiForm.LOGINFORMFULLNAME);            }        }        private static void Application_Idle(object sender, EventArgs e)        {            Application.Idle -= Application_Idle;            if (context.MainForm == null)            {                Form form = new LoginForm();                context.MainForm = form;                form.Show();            }        }        private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)        {            var ex = e.Exception;            if (ex != null)            {                LogNet.Log.WriteLog("Application_ThreadException", ex);            }            MessageBox.Show("系统出现异常:" + (ex.Message + " " + (ex.InnerException != null && ex.InnerException.Message != null && ex.Message != ex.InnerException.Message ? ex.InnerException.Message : "")));        }        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)        {            var ex = e.ExceptionObject as Exception;            if (ex != null)            {                LogNet.Log.WriteLog("CurrentDomain_UnhandledException", ex);            }            MessageBox.Show("系统出现异常:" + (ex.Message + " " + (ex.InnerException != null && ex.InnerException.Message != null && ex.Message != ex.InnerException.Message ? ex.InnerException.Message : "")));        }    }

 

转载于:https://www.cnblogs.com/yonsy/p/5606882.html

你可能感兴趣的文章
IBM人工智能进入法律行业:推世界首位AI律师ROSS
查看>>
深入理解 Java 方法
查看>>
本周小记
查看>>
Java中的队列同步器AQS
查看>>
面试题之js数组遍历
查看>>
实例演示vuex模块化和命名空间
查看>>
阿里云的重大战略调整,“被集成”成核心,发布SaaS加速器助力企业成长
查看>>
java B2B2C Springboot多租户电子商城系统-分布式服务跟踪(抽样收集)
查看>>
从字节码层面,解析 Java 布尔型的实现原理
查看>>
深入联想隐藏分区 打造个性一键恢复
查看>>
搞定接口,网络入了门
查看>>
1.Windows Server -- DNS老化时间和清理
查看>>
spring security动态配置url权限
查看>>
ubuntu安装chrome及firefox
查看>>
spring security oauth2 password授权模式
查看>>
7.29作业
查看>>
微信协议交换、消息收发
查看>>
决心书
查看>>
高性能RPC框架——Dubbo一站式快速入门
查看>>
JMS 之 Active MQ 消息存储
查看>>