捕获异常 winform

时间:2022-11-10 07:48:57

可以捕获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&period;ThreadException &plus; AppDomain&period;CurrentDomain&period;UnhandledException

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

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

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

  4. &lbrack;开源&rsqb;WinForm 控件使用总结

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

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

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

  6. C&num;使用MiniDump捕获异常

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

  7. C&num; Winform 跨线程更新UI控件常用方法总结&lpar;转&rpar;

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

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

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

  9. c&num; winform 服务器提交了协议冲突&period; Section&equals;ResponseStatusLine

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

随机推荐

  1. 如何重新注册VMware Update Manager(VUM)至vCenter Server中

    在VMware的vSphere化境中,VUM的角色相当于Windows 环境中的WSUS(Windows 更新服务器),可以批量,自动化的完成所管辖ESXi主机的大版本迁移,小版本升级的任务,深受管理 ...

  2. Hive&colon;常用的一些命令

    1.一般可以通过beeline,代理方式登录hive; 2.使用数据库abc_hive_db:use abc_hive_db; 3.查看数据库中有哪些表:show tables :有哪些特定表 sho ...

  3. ThinkPHP多表联合查询的常用方法

    1.原生查询示例: $Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_t ...

  4. maven&lowbar;Error building POM &lpar;may not be this project&&num;39&semi;s POM&rpar;错误

    如果maven项目在执行编译等操作时报如题错误的话,请仔细检查pom.xml,一般是由pom的语法错误导致的,例如我的项目是因为: dependencies 元素下不应该有properties元素导致 ...

  5. 修改Tabhost样式和字体大小和居中显示

    有时候我们的tabhost并不需要贴图,所以这个时候就必须把文字居中显示和设置大小了,代码如下 setContentView(R.layout.home_vzo_tabhost);          ...

  6. FaceBook页面加载技术

    1. 技术背景 FaceBook页面加载技术 试想这样一个场景,一个经常访问的网站,每次打开它的页面都要要花费6 秒:同时另外一个网站提供了相似的服务,但响应时间只需3 秒,那么你会如何选择呢?数据表 ...

  7. 201521123016 《Java程序设计》第2周学习总结

    1. 本周学习总结 JAVA中string对象创建后不可修改. 使用StringBuilder编写代码,减少内存空间的占用. 字符串使用"+"拼接,拼接后其他类型会被转化为字符串. ...

  8. protocol&lowbar;link

    蔡燧林:1992—2000年教育部考试中心研究生数学命题组组长现在退休养老.要想办法弄到他编的书(ps:别问怎么弄到,我和我同学都能弄到,你怎么会不能弄到呢)李林:目前在导航独家授课,他能屡屡命中考研 ...

  9. 最全ASCII对应码表-键值

    OCT(八进制) 最全ASCII码对应表—与键盘按键对应值 (二进)Bin    (十进)Dec   (十六进)Hex         缩写/字符                            ...

  10. 席位分配问题——惯例Q值法和d&amp&semi;&num;39&semi;hondt法的MATLAB程序

      本篇博文为追忆以前写过的算法系列第四篇 温故知新 本篇于2009年发表于百度博客,当时还没接触CSDN.所以是文学和技术博客混淆,只是这个程序博文訪问量突破2000,有不少网友评论互动.应该 ...