winform 程序异常捕获全局处理

xiaoxiao2021-02-28  28

using System; using System.Windows.Forms; using System.Diagnostics; using System.IO; namespace 蓦然回首 {     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);                 string MName = Process.GetCurrentProcess().MainModule.ModuleName;                 string PName = Path.GetFileNameWithoutExtension(MName).ToString ();                 Process[] myProcess = Process.GetProcessesByName(PName);                 if (myProcess.Length > 1)                {                 MessageBox.Show(" 诸葛卧龙神机妙算鬼谷子魔法助手已运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);                }                else                {                 Application.EnableVisualStyles();                 Application.SetCompatibleTextRenderingDefault(false);                 Application.Run(new 锁定());                }               }               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);             }             finally { }         }         /// <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();             }         }     }

}

以上内容有以下作者共享

转载请注明原文地址: https://www.6miu.com/read-1000163.html

最新回复(0)