可以捕获winform中的异常写到文本中

 <p>可以捕获winform中的异常写到文本中</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6')"><img id="code_img_closed_7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /><img id="code_img_opened_7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6" class="code_img_opened" style="display: none;" onclick="cnblogs_code_hide('7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" />
<div id="cnblogs_code_open_7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6" class="cnblogs_code_hide">
<pre><span style="color: #008080;"> </span> <span style="color: #000000;"> [STAThread]
</span><span style="color: #008080;"> </span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> Main()
</span><span style="color: #008080;"> </span> <span style="color: #000000;"> {
</span><span style="color: #008080;"> </span> <span style="color: #0000ff;">try</span>
<span style="color: #008080;"> </span> <span style="color: #000000;"> {
</span><span style="color: #008080;"> </span> <span style="color: #008000;">//</span><span style="color: #008000;">处理未捕获的异常 </span>
<span style="color: #008080;"> </span> <span style="color: #000000;"> Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
</span><span style="color: #008080;"> </span> <span style="color: #008000;">//</span><span style="color: #008000;">处理UI线程异常 </span>
<span style="color: #008080;"> </span> Application.ThreadException += <span style="color: #0000ff;">new</span><span style="color: #000000;"> System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
</span><span style="color: #008080;"></span> <span style="color: #008000;">//</span><span style="color: #008000;">处理非UI线程异常 </span>
<span style="color: #008080;"></span> AppDomain.CurrentDomain.UnhandledException += <span style="color: #0000ff;">new</span><span style="color: #000000;"> UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> Application.EnableVisualStyles();
</span><span style="color: #008080;"></span> Application.SetCompatibleTextRenderingDefault(<span style="color: #0000ff;">false</span><span style="color: #000000;">);
</span><span style="color: #008080;"></span> Application.Run(<span style="color: #0000ff;">new</span><span style="color: #000000;"> Form1());
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception ex)
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">string</span> strDateInfo = <span style="color: #800000;">"</span><span style="color: #;">出现应用程序未处理的异常:</span><span style="color: #;">"</span> + DateTime.Now.ToString() + <span style="color: #800000;">"</span><span style="color: #;">\r\n</span><span style="color: #;">"</span><span style="color: #000000;">;
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">if</span> (ex != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #;">异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n</span><span style="color: #;">"</span><span style="color: #000000;">,
</span><span style="color: #008080;"></span> <span style="color: #000000;"> ex.GetType().Name, ex.Message, ex.StackTrace);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">else</span>
<span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> str = <span style="color: #0000ff;">string</span>.Format(<span style="color: #800000;">"</span><span style="color: #;">应用程序线程错误:{0}</span><span style="color: #;">"</span><span style="color: #000000;">, ex);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span>
<span style="color: #008080;"></span> <span style="color: #000000;"> writeLog(str);
</span><span style="color: #008080;"></span> <span style="color: #008000;">//</span><span style="color: #008000;">frmBug f = new frmBug(str);</span><span style="color: #008000;">//</span><span style="color: #008000;">友好提示界面
</span><span style="color: #008080;"></span> <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
<span style="color: #008080;"></span> MessageBox.Show(<span style="color: #800000;">"</span><span style="color: #;">发生致命错误,请及时联系作者!</span><span style="color: #;">"</span>, <span style="color: #800000;">"</span><span style="color: #;">系统错误</span><span style="color: #;">"</span><span style="color: #000000;">, MessageBoxButtons.OK, MessageBoxIcon.Error);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;summary&gt;</span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span><span style="color: #008000;">这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
</span><span style="color: #008080;"></span> <span style="color: #808080;">///</span><span style="color: #008000;">做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
</span><span style="color: #008080;"></span> <span style="color: #808080;">///</span><span style="color: #008000;">这就是仁者见仁智者见智,大家自己做了。
</span><span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;/summary&gt;</span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;param name="sender"&gt;&lt;/param&gt;</span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;param name="e"&gt;&lt;/param&gt;</span>
<span style="color: #008080;"></span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> Application_ThreadException(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, System.Threading.ThreadExceptionEventArgs e)
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span>
<span style="color: #008080;"></span> <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">string</span> strDateInfo = <span style="color: #800000;">"</span><span style="color: #;">出现应用程序未处理的异常:</span><span style="color: #;">"</span> + DateTime.Now.ToString() + <span style="color: #800000;">"</span><span style="color: #;">\r\n</span><span style="color: #;">"</span><span style="color: #000000;">;
</span><span style="color: #008080;"></span> Exception error = e.Exception <span style="color: #0000ff;">as</span><span style="color: #000000;"> Exception;
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">if</span> (error != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #;">异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n</span><span style="color: #;">"</span><span style="color: #000000;">,
</span><span style="color: #008080;"></span> <span style="color: #000000;"> error.GetType().Name, error.Message, error.StackTrace);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">else</span>
<span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> str = <span style="color: #0000ff;">string</span>.Format(<span style="color: #800000;">"</span><span style="color: #;">应用程序线程错误:{0}</span><span style="color: #;">"</span><span style="color: #000000;">, e);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #000000;"> writeLog(str);
</span><span style="color: #008080;"></span> <span style="color: #008000;">//</span><span style="color: #008000;">frmBug f = new frmBug(str);</span><span style="color: #008000;">//</span><span style="color: #008000;">友好提示界面
</span><span style="color: #008080;"></span> <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
<span style="color: #008080;"></span> MessageBox.Show(<span style="color: #800000;">"</span><span style="color: #;">发生致命错误,请及时联系作者!</span><span style="color: #;">"</span>, <span style="color: #800000;">"</span><span style="color: #;">系统错误</span><span style="color: #;">"</span><span style="color: #000000;">, MessageBoxButtons.OK, MessageBoxIcon.Error);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> CurrentDomain_UnhandledException(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, UnhandledExceptionEventArgs e)
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
</span><span style="color: #008080;"></span> Exception error = e.ExceptionObject <span style="color: #0000ff;">as</span><span style="color: #000000;"> Exception;
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">string</span> strDateInfo = <span style="color: #800000;">"</span><span style="color: #;">出现应用程序未处理的异常:</span><span style="color: #;">"</span> + DateTime.Now.ToString() + <span style="color: #800000;">"</span><span style="color: #;">\r\n</span><span style="color: #;">"</span><span style="color: #000000;">;
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">if</span> (error != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #;">Application UnhandledException:{0};\n\r堆栈信息:{1}</span><span style="color: #;">"</span><span style="color: #000000;">, error.Message, error.StackTrace);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">else</span>
<span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> str = <span style="color: #0000ff;">string</span>.Format(<span style="color: #800000;">"</span><span style="color: #;">Application UnhandledError:{0}</span><span style="color: #;">"</span><span style="color: #000000;">, e);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #000000;"> writeLog(str);
</span><span style="color: #008080;"></span> <span style="color: #008000;">//</span><span style="color: #008000;">frmBug f = new frmBug(str);</span><span style="color: #008000;">//</span><span style="color: #008000;">友好提示界面
</span><span style="color: #008080;"></span> <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
<span style="color: #008080;"></span> MessageBox.Show(<span style="color: #800000;">"</span><span style="color: #;">发生致命错误,请停止当前操作并及时联系作者!</span><span style="color: #;">"</span>, <span style="color: #800000;">"</span><span style="color: #;">系统错误</span><span style="color: #;">"</span><span style="color: #000000;">, MessageBoxButtons.OK, MessageBoxIcon.Error);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;summary&gt;</span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span><span style="color: #008000;"> 写文件
</span><span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;/summary&gt;</span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;param name="str"&gt;&lt;/param&gt;</span>
<span style="color: #008080;"></span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> writeLog(<span style="color: #0000ff;">string</span><span style="color: #000000;"> str)
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> <span style="color: #0000ff;">if</span> (!Directory.Exists(<span style="color: #800000;">"</span><span style="color: #;">ErrLog</span><span style="color: #;">"</span><span style="color: #000000;">))
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> Directory.CreateDirectory(<span style="color: #800000;">"</span><span style="color: #;">ErrLog</span><span style="color: #;">"</span><span style="color: #000000;">);
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span>
<span style="color: #008080;"></span> <span style="color: #0000ff;">using</span> (StreamWriter sw = <span style="color: #0000ff;">new</span> StreamWriter(<span style="color: #800000;">@"</span><span style="color: #;">ErrLog\ErrLog-</span><span style="color: #;">"</span>+DateTime.Now.ToString(<span style="color: #800000;">"</span><span style="color: #;">yyyy-MM-dd</span><span style="color: #;">"</span>)+<span style="color: #800000;">"</span><span style="color: #;">.txt</span><span style="color: #;">"</span>, <span style="color: #0000ff;">true</span><span style="color: #000000;">, System.Text.Encoding.UTF8))
</span><span style="color: #008080;"></span> <span style="color: #000000;"> {
</span><span style="color: #008080;"></span> <span style="color: #000000;"> sw.WriteLine(str);
</span><span style="color: #008080;"></span> sw.WriteLine(<span style="color: #800000;">"</span><span style="color: #;">---------------------------------------------------------</span><span style="color: #;">"</span><span style="color: #000000;">);
</span><span style="color: #008080;"></span>
<span style="color: #008080;"></span> <span style="color: #000000;"> sw.Close();
</span><span style="color: #008080;"></span> <span style="color: #000000;"> }
</span><span style="color: #008080;"></span> }</pre>
</div>
<span class="cnblogs_code_collapse">program</span></div>
<p>这个在program中的文件,程序的入口</p>

这个在program中的文件,程序的入口

最新文章

  1. ssh自动输入密码脚本 切换目录脚本
  2. BZOJ 1853 【Scoi2010】 幸运数字
  3. nginx中相关配置
  4. JS Json数据转换
  5. 8 个最棒的 .NET 开发相关工具
  6. (转)mysql中InnoDB表为什么要建议用自增列做主键
  7. Finding Nemo 分类: POJ 2015-07-11 10:11 10人阅读 评论(0) 收藏
  8. javaio-printwriter
  9. VIM技巧:翻页
  10. JSON 教程学习进度备忘
  11. famous javascript library.
  12. 《算法导论》读书笔记之动态规划—最长公共子序列 &amp; 最长公共子串(LCS)
  13. C#-实验3
  14. LightOJ1370 Bi-shoe and Phi-shoe
  15. 笔记:I/O流-内存映射文件
  16. 【总结】 Lucas定理
  17. aliyun服务器ecs被ddos后无法被zabbix-server监控的处理
  18. OC转场动画UIViewControllerTransitioningDelegate
  19. change color
  20. 在Express中使用Multiparty进行文件上传及POST、GET参数获取

热门文章

  1. Cocos2d-x——CocosBuilder官方帮助文档翻译3 动画
  2. stm32上的Lava虚拟机开发进度汇报(2)
  3. 实现Android半透明Menu效果的开发实例
  4. Android开发 将数据保存到SD卡
  5. pthread实现多线程查询(转)
  6. slots - Python的结构体 转
  7. Java多线程中start()和run()的区别
  8. eclipse中,把java函数代码折叠/展开
  9. VC6.0代码移植到VS2008运行时乱码问题解决
  10. Qt... configure: error: Qt (&gt;= Qt 2.2.2) (headers…