可以捕获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. 对PostgreSQL中tablespace 与 database, table的理解

    开始: 当前的tablesapce信息 pgsql=# select * from pg_tablespace; spcname | spcowner | spclocation | spcacl | ...

  2. 很近没读书了,读书笔记之<<大道至简>>

    空闲时间不想虚度,不知道干啥的时候,就读读存在移动硬盘里的电子书吧,已经放了N久了,不知道什么时候放的,好像是大学刚毕业的时候下载的,...... 好久...... 现在才去读..是不是太晚了.... ...

  3. Python 动态语言

    1.在C++中,Animal a = Person(); 这样写是不行的,因为a的内容不能使用Person的内容来填充. 2.在Python中,变量不需要声明,而且可以赋任何值.Python是如何做到 ...

  4. 从零开始学习Hadoop--前言

    Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的. 这本书有一个明确的目标:只要有一台能上网的计算机,就可以让读者在最短的时间内,学会Hadoop的初级开发.所以,这本书只讲 ...

  5. 1039. Course List for Student (25)

    题目链接:http://www.patest.cn/contests/pat-a-practise/1039 题目: 1039. Course List for Student (25) 时间限制 2 ...

  6. Android播播放完SD卡指定文件夹音乐之后,自动播放下一首

    最近做一个项目,需要连续播放音乐,播放完一首歌之后,自动播放完下一首歌.不要重复播放. 代码如下: package com.example.asyncplayer_ex; import java.io ...

  7. android应用程序ANR定义

    在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框.用户可以选择 ...

  8. spring源码分析之spring-messaging模块详解

    0 概述 spring-messaging模块为集成messaging api和消息协议提供支持. 其代码结构为: 其中base定义了消息Message(MessageHeader和body).消息处 ...

  9. 非托管C++通过C++/CLI包装调用C# DLL

    项目中要给其它客户程序提供DLL做为接口,该项目是在.Net4.0平台下开发.终所周知.Net的各个版本之间存在着兼容性的问题,但是为了使用高版本运行平台的新特性,又不得不兼顾其它低版本平台客户程序的 ...

  10. Partitioning, Shuffle and sort

    Partitioning, Shuffle and sort  what happened? - Partitioning Partitioning is the process of determi ...