问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

捕获全局异常怎么处理

发布网友 发布时间:2022-04-23 20:30

我来回答

1个回答

热心网友 时间:2022-04-27 09:54

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

    }

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
胜达这款车百公里油耗多少? 胜达节能油加盟办厂可靠吗是不是骗子 河南洛阳胜达就是骗子,我把钱交了也不来人了,他们一个老总说了爱咋办... 胜达油是个骗局吗 胜达节能油是什么? 叩解度关于叩解的论述 湿重跟湿重有关的打浆磨片 戴尔XPS M1330-950重要参数 如果到别的单位去面试的话 如果人家问起为什么会选择这家公司而离开另外... 学生会被两个部门同时面试怎么办 迷你世界在创造模式下,怎么设置插件?才能让野人自动种植麦子! responseadvice和全局异常处理器区别 《迷你世界》怎么开创造? 迷你世界怎么用插件? 迷你世界怎么创作自己的模型? 想开个只做早餐的外卖店。 做早餐外卖生意赚钱吗 大家乐为什么没有早餐外卖? 我爸妈是开早餐店的 没有送外卖,开通外卖服务好吗? 早餐外卖创业为什么容易失败 朗诵考级证书上有无国考有什么区别? 孩子以前考朗诵考级,听说现在青岛有 “播音主持考级”?有什么不一样吗,求指点 中国艺术科技研究所朗诵考级有什么优势吗? 北京朗诵考级哪个最权威 请问朗诵考级可以考哪些地方?(如中国歌舞剧院……) 朗诵有考级吗 祛痘祛痘印最快的方法 参加朗诵考级有什么用? 朗诵考级和口才考级的区别? 快速去痘印,都有那些好用的方法? springmvc如何设置全局异常信息处理 迷你世界生存模式怎么改成创造模式?最好有图 windows服务程序全局异常怎么捕获 迷你世界插件怎么加制作材料? SSH中异常是怎么处理的 异常处理的概述 迷你世界如何制作插件兑换物品的东西 请问Lua中OnTick,OnBegin这种事件是怎么实现的? 迷你世界怎么把生存改成创造? 迷你世界怎么弄其他模式, 关于C#的异常处理。 迷你世界怎么把冒险模式改成创造模式(手机版)? javascript中异步操作的异常怎么处理 在迷你世界创造自己的酷跑时,怎么开启创造模式呢? 华为m5,出现捕获全局异常 程序即将关闭,应该怎么办 迷你世界插件库怎么用,怎么提取到地图上?大佬帮帮忙 未处理的全局异常:Exception has been thrown by the target of an in... 迷你世界怎么弄激光武器插件。 MicrosoftMobile移动开发宝典的目录 迷你世界冒险模式怎么打开创造背包?