博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform 记录全局异常捕获
阅读量:6479 次
发布时间:2019-06-23

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

这篇文章主要是备用

记录winform程序捕获全局异常。

///         ///   应用程序的主入口点。        ///         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);                    var sp = new SplashForm(); //create splash screen                    sp.Show(); //show splash screen                    context = new ApplicationContext();                    context.Tag = sp;                    Application.Idle += Application_Idle; //注册程序运行空闲去执行主程序窗体相应初始化代码                    Application.Run(context);                }            }            catch (Exception ex)            {                LogHelper.Log(ex);                MessageBox.Show("系统出现未知异常,请重启系统!");            }        }        //初始化等待处理函数        private static void Application_Idle(object sender, EventArgs e)        {            Application.Idle -= Application_Idle;            if (context.MainForm == null)            {                var mw = new Login();                //YYQTestForm mw = new YYQTestForm();                context.MainForm = mw;                var sp = (SplashForm) context.Tag;                sp.Close(); //关闭启动窗体                 mw.Show(); //启动主程序窗体            }        }        ///        ///  这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考        ///  做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等        ///  这就是仁者见仁智者见智,大家自己做了。        ///        ///         ///         private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)        {            var ex = e.Exception;            if (ex != null)            {                LogHelper.Log(ex);            }            MessageBox.Show("系统出现未知异常,请重启系统!");        }        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)        {            var ex = e.ExceptionObject as Exception;            if (ex != null)            {                LogHelper.Log(ex);            }            MessageBox.Show("系统出现未知异常,请重启系统!");        }
View Code

 

转载于:https://www.cnblogs.com/springSky/p/3413638.html

你可能感兴趣的文章
Mobile Store OpenCart 主题模板 ABC-0075
查看>>
9 Android WIFI 驱动移植
查看>>
请把Camera hold住 - Android高通平台调试Camera驱动全纪录
查看>>
Win 7 64 位下打包的问题解决方案
查看>>
pgbouncer安装配置过程
查看>>
Spring系列之-Spring bean的生命周期
查看>>
popullWindon
查看>>
安装新版本的jdk,修改环境变量java_home后,jdk版本始终不变
查看>>
创建mercurial http服务端
查看>>
linux安装java环境
查看>>
你可能不知道的一些PHP函数的特性
查看>>
C语言实现将彩色BMP位图转化为二值图
查看>>
CSS Pocket Reference
查看>>
SpringMVC之类型转换Converter
查看>>
多线程(二)
查看>>
使用innobackupex进行mysql备份
查看>>
CentOS 7环境下安装chrome浏览器
查看>>
Python的包管理工具Pip
查看>>
java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量...
查看>>
Docker容器网络设置
查看>>