winform 記錄全域異常捕獲

來源:互聯網
上載者:User

標籤:winform   style   blog   class   code   tar   

原文:winform 記錄全域異常捕獲

這篇文章主要是備用

記錄winform程式捕獲全域異常。

        /// <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);                    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(); //啟動主程式表單            }        }        ///<summary>        ///  這就是我們要在發生未處理異常時處理的方法,我這是寫出錯詳細資料到文本,如出錯後彈出一個漂亮的出錯提示表單,給大家做個參考        ///  做法很多,可以是把出錯詳細資料記錄到文本、資料庫,發送出錯郵件到作者信箱或出錯後重新初始化等等        ///  這就是仁者見仁智者見智,大家自己做了。        ///</summary>        ///<param name="sender"> </param>        ///<param name="e"> </param>        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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.