WinForm C#全局错误捕捉处理【整理】
- static class Program
- {
- /// <summary>
- /// 应用程序的主入口点。
- /// </summary>
- [STAThread]
- static void Main()
- {
- try
- {
- //添加事件处理程序未捕获的异常
- Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
- //添加事件处理UI线程异常
- Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
- //添加事件处理非UI线程异常
- AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new FrmActivity());
- }
- catch (Exception ex)
- {
- string str = "";
- string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
- if (ex != null)
- {
- str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
- ex.GetType().Name, ex.Message, ex.StackTrace);
- }
- else
- {
- str = string.Format("应用程序线程错误:{0}", ex);
- }
- //写日志
- WriteLog.WriteErrLog(str);
- MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- /// <summary>
- ///这就是我们要在发生未处理异常时处理的方法,做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
- {
- string str = "";
- string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
- Exception error = e.Exception as Exception;
- if (error != null)
- {
- str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
- error.GetType().Name, error.Message, error.StackTrace);
- }
- else
- {
- str = string.Format("应用程序线程错误:{0}", e);
- }
- //写日志
- WriteLog.WriteErrLog(str);
- MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- /// <summary>
- /// ' 处理UI异常
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
- {
- string str = "";
- Exception error = e.ExceptionObject as Exception;
- string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
- if (error != null)
- {
- str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
- }
- else
- {
- str = string.Format("Application UnhandledError:{0}", e);
- }
- //写日志
- WriteLog.WriteErrLog(str);
- MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
WinForm C#全局错误捕捉处理【整理】的更多相关文章
- Android 全局错误管理
package com.wlwl.yiyuan; import java.io.File; import java.io.PrintWriter; import java.io.StringWrite ...
- 如何捕获winform程序全局异常?
1.在C#中我们如何处理异常? 上面的问题学过C#的问题大家可能都能回答处理,用try-catch-finally具体如下: try { //可能出错的语句 } catch (Exception) { ...
- c#winform将全局异常抛出,不用大量写try()catch()
一.在program.cs处完善成如下,但是这样后只能抛出主线程(UI)的错误,所以请看第二步 /// 应用程序的主入口点. /// </summary> [STAThread] stat ...
- android中全局异常捕捉
android中全局异常捕捉 只要写代码就会有bug,但是我们要想办法收集到客户的bug.有第三方bugly或者友盟等可以收集.但是,android原生就提供了有关收集异常的api,所以我们来学习一下 ...
- asp.net 使用HttpModule记录全局错误
以前使用Global.asax记录全局的错误日志觉得挺好用,但是如果一个解决方案下有N多个项目,每个下边都需要加一个并且代码都还是重复的,终于有一天无法再忍受这种模式,考虑到HttpModule,直接 ...
- 用VSCode开发一个asp.net core 2.0+angular 5项目(4): Angular5全局错误处理
第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三 ...
- [翻译]ASP.NET Web API 2 中的全局错误处理
目录 已存在的选项 解决方案预览 设计原则 什么时候去用 方案详情 示例 附录: 基类详情 原文链接 Global Error Handling in ASP.NET Web API 2 由于翻译水平 ...
- Spring 全局异常捕捉
Spring全局异常捕捉类 注解@ControllerAdvice package com.sicdt.sicsign.web.bill.controller; import org.springfr ...
- springboot(四)拦截器和全局异常捕捉
github代码:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service 全部 ...
随机推荐
- dup和dup2函数
下面两个函数都可用来复制一个现存的文件描述符: #include<unistd.h> int dup(int filedes); int dup2(int filedes,int file ...
- Android中this.*与*.this还有*.class的区别是什么?
这些是java的基础知识.首先this代表本类的一个引用,this.*表示调用本类的某个方法,这个时候通常可以省略this:但在内部类中不能省略,否则编译器会认为是内部类的引用,所以要在this前加上 ...
- 升级时出现:请先升级 UCenter 到 1.6.0 以上版本。
有的站点UCenter升级完成后仍然提示请先升级 UCenter 到 1.6.0 以上版本的现象,下面分享下UCenter版本号不正确的原因和处理办法,可能有以下的几个文件和处理办法: 一.UCent ...
- Linux shell 脚本攻略之根据扩展名切分文件名
摘自:<Linux shell 脚本攻略>Page61-62
- ipad mini2 ios7 磁盘分析文件夹大小
如果没越狱可以通过, 设置->通用->用量 来查看磁盘占用 越狱之后, 莫名其妙地 "其他" 占了两三个G.. windows下有个好用的工具folder size ...
- 小白日记17:kali渗透测试之缓冲区溢出实例-windows,POP3,SLmail
缓冲区溢出实例 缓冲区溢出原理:http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html 空间存储了用户程序的函数栈帧 ...
- Divisibility
Description Consider an arbitrary sequence of integers. One can place + or - operators between integ ...
- css笔记15:盒子模型
1.流 流:html元素在网页中显示的顺序 标准流:在html文件中,写在前面的元素在前面显示,写在后面的html元素在后面显示. 非标准流:在html之中,当某个元素脱离了标准流,那么它处于非标准流 ...
- angular 项目回顾
从学习angular,到实际项目开发不到一周,完全是边写边学呀,都是为了项目,已使用angular 开发了两个项目了,有些技术当时只是会用,都没好好回顾一下,现在有时间回顾一下,项目中用到的一些指令, ...
- 关于JDBC和ODBC的区别
转载..... JDBC与ODBC都可以实现类似的功能,但JDBC与ODBC的区别是他们的开发架构不同,其实现细节上也有所差异. 谈到JDBC与ODBC的区别,JDBC和ODBC其实都是用来连接数据库 ...