LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】WinForm程序全局捕捉异常处理办法

admin
2023年9月4日 12:19 本文热度 516

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

    static class Program

    {

        static string RunFormFullName

        {

            get

            {

                string setRunFormFullName = CIPACE.Sys.Configuration.RunFormFullName;

                if (setRunFormFullName == null)

                    setRunFormFullName = DigiForm.SETRUNFORMFULLNAME;

                return setRunFormFullName;

            }

        }

        /// <summary>

        ///   应用程序的主入口点。

        /// </summary>

        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 : "")));

        }

    }


该文章在 2023/9/4 12:19:24 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved