winform-全局异常捕获作用

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

using JxsFL.CaiGou;

using JxsFL.CangKu;

using JxsFL.CangKu.Out;

using JxsFL.KJ;

using JxsFL.LEDs;

using DevExpress.LookAndFeel;

using System.IO;





namespace JxsFL

{

    static class Program

    {

        /// <summary>

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

        /// </summary>

        [STAThread]

        static void Main()

        {

            try

            {

                //处理未捕获的异常   

                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

                //处理UI线程异常   

                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

                //处理非UI线程异常   

                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);



                Application.EnableVisualStyles();

                Application.SetCompatibleTextRenderingDefault(false);

                if (System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1)

                {

                    MessageBox.Show("已经有一个运行了");

                }

                else

                {

                    DevExpress.UserSkins.BonusSkins.Register();

                    DevExpress.UserSkins.OfficeSkins.Register();

                    DevExpress.Skins.SkinManager.EnableFormSkins();

                    UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue");

                    Application.EnableVisualStyles();

                    Application.SetCompatibleTextRenderingDefault(false);

                    //Application.Run(new JxsFL.Mead.ShiFuDCL.ShiFuDCLFind());

                    Application.Run(new Login());

                }

            }

            catch (Exception ex)

            {

                string str = "";

                string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";



                if (ex != null)

                {

                    str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",

                         ex.GetType().Name, ex.Message, ex.StackTrace);

                }

                else

                {

                    str = string.Format("应用程序线程错误:{0}", ex);

                }





                writeLog(str);

                MessageBox.Show("发生致命错误,请及时联系深圳市金佳诺软件科技技术支持!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }



        }



        /// <summary>

        ///发生异常写入文本文件,并弹出提示框(自定义,比如上传给邮件等)        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)

        {



            string str = "";

            string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";

            Exception error = e.Exception as Exception;

            if (error != null)

            {

                str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",

                     error.GetType().Name, error.Message, error.StackTrace);

            }

            else

            {

                str = string.Format("应用程序线程错误:{0}", e);

            }



            writeLog(str);

            MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

        }



        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)

        {

            string str = "";

            Exception error = e.ExceptionObject as Exception;

            string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";

            if (error != null)

            {

                str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);

            }

            else

            {

                str = string.Format("Application UnhandledError:{0}", e);

            }



            writeLog(str);

            MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

        }

        /// <summary>

        /// 写文件

        /// </summary>

        /// <param name="str"></param>

        static void writeLog(string str)

        {

            if (!Directory.Exists("ErrLog"))

            {

                Directory.CreateDirectory("ErrLog");

            }



            using (StreamWriter sw = new StreamWriter(@"ErrLog\ErrLog.txt", true))

            {

                sw.WriteLine(str);

                sw.WriteLine("---------------------------------------------------------");

                sw.Close();

            }

        }

    }

}

 

你可能感兴趣的:(WinForm)