winform应用程序异常处理

对于winform应用程序补抓异常信息,我们经常用到得try catch。

如果代码中在某个地方执行异常,但是没有加try catch,这个时候就需要做一些全局异常捕捉。

怎么做到全局异常捕捉。winform程序在启动cs中,Program.cs添加以下事件

1.处理未捕获的异常   SetUnhandledExceptionMode

2.处理UI线程异常      ThreadException 

3.处理非UI线程异常   UnhandledException

 1 /// <summary>
 2 /// 应用程序的主入口点。
 3 /// </summary>
 4 [STAThread]
 5 static void Main()
 6 {
 7 try
 8 {
 9 
10 //处理未捕获的异常   
11 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
12 
13 //处理UI线程异常   
14 Application.ThreadException += Application_ThreadException;
15 //处理非UI线程异常   
16 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
17 
18 Application.EnableVisualStyles();
19 Application.SetCompatibleTextRenderingDefault(false);
20 
21 ……
22 
23 }
24 catch (Exception ex)
25 {
26 ……
27 }
28 
29 }
30 
31  
32 
33 /// <summary>
34 ///处理UI线程异常   
35 /// </summary>
36 /// <param name="sender"></param>
37 /// <param name="e"></param>
38 static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
39 {
40 string str;
41 var strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now + "\r\n";
42 var error = e.Exception;
43 if (error != null)
44 {
45 str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
46 error.GetType().Name, error.Message, error.StackTrace);
47 }
48 else
49 {
50 str = string.Format("应用程序线程错误:{0}", e);
51 }
52 
53 MessageBox msg = new MessageBox();
54 msg.title = "系统错误";
55 msg.text = "发生错误,请查看程序日志!";
56 msg.ShowDialog();
57 //Environment.Exit(0);
58 }
59 
60 /// <summary>
61 /// 处理非UI线程异常   
62 /// </summary>
63 /// <param name="sender"></param>
64 /// <param name="e"></param>
65 static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
66 {
67 var error = e.ExceptionObject as Exception;
68 var strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now + "\r\n";
69 var str = error != null ? string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace) : string.Format("Application UnhandledError:{0}", e);
70 
71 MessageBox msg = new MessageBox();
72 msg.title = "系统错误";
73 msg.text = "发生错误,请查看程序日志!";
74 msg.ShowDialog();
75 //Environment.Exit(0);
76 }

 

posted @ 2019-09-24 09:22  产卵的鱼  阅读(893)  评论(0编辑  收藏  举报