可以捕获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;"><summary></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;"></summary></span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="sender"></param></span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="e"></param></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;"><summary></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;"></summary></span>
<span style="color: #008080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="str"></param></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的更多相关文章
-
【转】Winform程序未捕获异常解决方法 EventType clr20r3 P1
from:http://blog.csdn.net/chichaodechao/article/details/8294922 在开发winform程序时,用到多线程,在服务器部署后运行,老是自动关才 ...
-
WinForm 捕获异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException
WinForm 捕获未处理的异常,可以使用Application.ThreadException 和AppDomain.CurrentDomain.UnhandledException事件 WinF ...
-
记录Winform开发过程中遇到的情况
前两天开发了个Winform操作Excel和数据库的一个小程序,把Winform的一些东西又给捡了起来,当中又学到了一些新的东西,特来写出来留作纪念. 一.CSKIN美化框架的使用 刚开始做的时候,发 ...
-
[开源]WinForm 控件使用总结
背景 都2019年了,还在用WinForm吗?哈哈,其实我也没在用,都是很多年前一些项目积累,所以代码写的有些屎,之所以开源出来,希望能给大家有所帮助,喜欢的话给 一个Star以资鼓励~: 具体代码: ...
-
C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)
概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常.处理跨线程更新Winform UI控件常用的方法有4种:1. ...
-
C#使用MiniDump捕获异常
c/c++语言里MiniDump是一个重要的调试手段,他们没有C#/java这样语言有很多异常输出信息( JVM异常导出bug日志功能,通常在jdk目录,文件格式hs_err_%pid%.log,pi ...
-
C# Winform 跨线程更新UI控件常用方法总结(转)
出处:http://www.tuicool.com/articles/FNzURb 概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件 ...
-
编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型
建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...
-
c# winform 服务器提交了协议冲突. Section=ResponseStatusLine
[转] 最近在用.net写一个网络蜘蛛,发现对有的网站用HttpWebrequest抓取网页的时候会报错,捕获异常提示:"服务器提交了协议冲突 Section=ResponseStatusL ...
随机推荐
-
如何重新注册VMware Update Manager(VUM)至vCenter Server中
在VMware的vSphere化境中,VUM的角色相当于Windows 环境中的WSUS(Windows 更新服务器),可以批量,自动化的完成所管辖ESXi主机的大版本迁移,小版本升级的任务,深受管理 ...
-
Hive:常用的一些命令
1.一般可以通过beeline,代理方式登录hive; 2.使用数据库abc_hive_db:use abc_hive_db; 3.查看数据库中有哪些表:show tables :有哪些特定表 sho ...
-
ThinkPHP多表联合查询的常用方法
1.原生查询示例: $Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_t ...
-
maven_Error building POM (may not be this project&#39;s POM)错误
如果maven项目在执行编译等操作时报如题错误的话,请仔细检查pom.xml,一般是由pom的语法错误导致的,例如我的项目是因为: dependencies 元素下不应该有properties元素导致 ...
-
修改Tabhost样式和字体大小和居中显示
有时候我们的tabhost并不需要贴图,所以这个时候就必须把文字居中显示和设置大小了,代码如下 setContentView(R.layout.home_vzo_tabhost); ...
-
FaceBook页面加载技术
1. 技术背景 FaceBook页面加载技术 试想这样一个场景,一个经常访问的网站,每次打开它的页面都要要花费6 秒:同时另外一个网站提供了相似的服务,但响应时间只需3 秒,那么你会如何选择呢?数据表 ...
-
201521123016 《Java程序设计》第2周学习总结
1. 本周学习总结 JAVA中string对象创建后不可修改. 使用StringBuilder编写代码,减少内存空间的占用. 字符串使用"+"拼接,拼接后其他类型会被转化为字符串. ...
-
protocol_link
蔡燧林:1992—2000年教育部考试中心研究生数学命题组组长现在退休养老.要想办法弄到他编的书(ps:别问怎么弄到,我和我同学都能弄到,你怎么会不能弄到呢)李林:目前在导航独家授课,他能屡屡命中考研 ...
-
最全ASCII对应码表-键值
OCT(八进制) 最全ASCII码对应表—与键盘按键对应值 (二进)Bin (十进)Dec (十六进)Hex 缩写/字符 ...
-
席位分配问题——惯例Q值法和d&;#39;hondt法的MATLAB程序
本篇博文为追忆以前写过的算法系列第四篇 温故知新 本篇于2009年发表于百度博客,当时还没接触CSDN.所以是文学和技术博客混淆,只是这个程序博文訪问量突破2000,有不少网友评论互动.应该 ...