C# WinForm捕获未处理的异常实例解析

C# WinForm捕获未处理的异常实例解析,第1张

概述本文以一个完整的实例形式讲述了C#WinForm捕获未处理的异常的方法。分享给大家供大家参考之用。具体代码如下:

本文以一个完整的实例形式讲述了C# WinForm捕获未处理的异常的方法。分享给大家供大家参考之用。具体代码如下:

using System;using System.Collections.Generic;using System.windows.Forms;using System.IO;namespace GobalException{  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);        Application.Run(new Form1());      }      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);//frmBUG f = new frmBUG(str);//友好提示界面      //f.ShowDialog();        MessageBox.Show("发生致命错误,请及时联系作者!","系统错误",MessageBoxbuttons.OK,MessageBoxIcon.Error);      }    }    /// <summary>    ///这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后d出一个漂亮的出错提示窗体,给大家做个参考    ///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等    ///这就是仁者见仁智者见智,大家自己做了。    /// </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);  //frmBUG f = new frmBUG(str);//友好提示界面      //f.ShowDialog();      MessageBox.Show("发生致命错误,请及时联系作者!",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.StackTrace);      }      else      {        str = string.Format("Application UnhandledError:{0}",e);      }      writeLog(str);//frmBUG f = new frmBUG(str);//友好提示界面      //f.ShowDialog();      MessageBox.Show("发生致命错误,请停止当前 *** 作并及时联系作者!",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();      }    }  }}

本文实例配有较为详尽的注释,便于大家阅读理解。希望本文所述对大家的C#程序设计有所帮助。

总结

以上是内存溢出为你收集整理的C# WinForm捕获未处理的异常实例解析全部内容,希望文章能够帮你解决C# WinForm捕获未处理的异常实例解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1255314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存