可以捕获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中的文件,程序的入口

捕获异常 winform的更多相关文章

  1. 【转】Winform程序未捕获异常解决方法 EventType clr20r3 P1

    from:http://blog.csdn.net/chichaodechao/article/details/8294922 在开发winform程序时,用到多线程,在服务器部署后运行,老是自动关才 ...

  2. WinForm 捕获异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException

     WinForm 捕获未处理的异常,可以使用Application.ThreadException 和AppDomain.CurrentDomain.UnhandledException事件 WinF ...

  3. 记录Winform开发过程中遇到的情况

    前两天开发了个Winform操作Excel和数据库的一个小程序,把Winform的一些东西又给捡了起来,当中又学到了一些新的东西,特来写出来留作纪念. 一.CSKIN美化框架的使用 刚开始做的时候,发 ...

  4. [开源]WinForm 控件使用总结

    背景 都2019年了,还在用WinForm吗?哈哈,其实我也没在用,都是很多年前一些项目积累,所以代码写的有些屎,之所以开源出来,希望能给大家有所帮助,喜欢的话给 一个Star以资鼓励~: 具体代码: ...

  5. C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)

    概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常.处理跨线程更新Winform UI控件常用的方法有4种:1. ...

  6. C#使用MiniDump捕获异常

    c/c++语言里MiniDump是一个重要的调试手段,他们没有C#/java这样语言有很多异常输出信息( JVM异常导出bug日志功能,通常在jdk目录,文件格式hs_err_%pid%.log,pi ...

  7. C# Winform 跨线程更新UI控件常用方法总结(转)

    出处:http://www.tuicool.com/articles/FNzURb 概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件 ...

  8. 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型

    建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...

  9. c# winform 服务器提交了协议冲突. Section=ResponseStatusLine

    [转] 最近在用.net写一个网络蜘蛛,发现对有的网站用HttpWebrequest抓取网页的时候会报错,捕获异常提示:"服务器提交了协议冲突 Section=ResponseStatusL ...

随机推荐

  1. cocos2d-x 多线程以及线程同步

    转自:http://blog.csdn.net/zhy_cheng/article/details/9116479 cocos2d-x引擎在内部实现了一个庞大的主循环,每帧之间更新界面,如果耗时的操作 ...

  2. PostgreSQL的 initdb 源代码分析之八

    继续分析 由于 我并未进行特殊的参数设置,所以 (strlen(default_text_search_config) == 0) 成立. 故 调用   default_text_search_con ...

  3. PostgreSQL中如何查询在当前的哪个数据库中

    [pgsql@localhost bin]$ ./psql -d tester psql () Type "help" for help. tester=# select curr ...

  4. java对象转JSON JS取JSON数据

    JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter(new PropertyFilter() { @Override ...

  5. hadoop数据[Hadoop] 实际应用场景之 - 阿里

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.明天在这里和大家一起学习一下hadoop数据 Hadoop在淘宝和支付宝的应用从09年开始,用于对海量数据的离线处置,例如对日志的分析,也涉及内 ...

  6. C#文件读写常用类介绍

    首先要熟悉.NET中处理文件和文件夹的操作.File类和Directory类是其中最主要的两个类.了解它们将对后面功能的实现提供很大的便利.      本节先对和文件系统相关的两个.NET类进行简要介 ...

  7. Cucumber 入门一

    (转自:http://www.cnblogs.com/jarodzz/archive/2012/07/02/2573014.html) 第一次看到Cucumber和BDD(Behavior Drive ...

  8. Android无法生成R文件的终极解决办法

    R文件如果在clean项目(Project—>Clean)和 Fix Project Properties(如下图):   如果在第一步无法解决的的时候,那可能原因就是资源文件调用的错误,比如资 ...

  9. fedora 20 注销

    当系统只有一个用户和只有一个桌面环境时,Fedora 20将不会显示Log Out菜单. 如果你确实需要logout,可以通过执行gnome-session-quit命令来logout. 如果你确实需 ...

  10. 百度API_Demo

    package com.test.www; import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu ...