WinForm程序中未处理异常的解决方法
创始人
2024-06-18 02:51:38
0

在这里我们将讨论的是WinForm程序中未处理异常的解决方法,51CTO向您推荐《WinForm应用与开发教程》,希望能对您了解WinForm有所帮助。

#T#

如果Windows Forms程序中有未被捕获的异常,会导致程序崩溃并且给用户造成不良的印象。例如下面的程序,模拟了一个未捕获的异常:

错误提示 

按钮事件为:

  1. private void button1_Click(object sender, EventArgs e){  
  2.         throw new Exception();  

点击Exception 按钮,会弹出如下默认窗口

错误窗口

Windows Forms提供了两个事件来处理未捕获的异常发生时的情况,分别是 Application.ThreadException和AppDomain.UnhandledException事件,前者用来处理UI线程中的异常,后者处理其他线程中的异常。要使程序使用自定义的事件来处理异常,可以使用如下代码:

  1. static class Program  
  2.     {  
  3.         ///   
  4.         /// The main entry point for the application.  
  5.         /// 
  6.  
  7.         [STAThread]  
  8.         static void Main()  
  9.         {  
  10.  Application.ThreadException += 
  11. new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);  
  12.  AppDomain.CurrentDomain.UnhandledException += 
  13. new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);  
  14.               
  15.             Application.EnableVisualStyles();  
  16.             Application.SetCompatibleTextRenderingDefault(false);  
  17.             Application.Run(new Form1());  
  18.         }          
  19.  
  20. static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)  
  21.         {  
  22.             MessageBox.Show("抱歉,您的操作没有能够完成,请再试一次或者联系软件提供商");  
  23.             LogUnhandledException(e.ExceptionObject);  
  24.         }  
  25.  
  26. static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)  
  27.         {  
  28.             MessageBox.Show("抱歉,您的操作没有能够完成,请再试一次或者联系软件提供商");  
  29.             LogUnhandledException(e.Exception);  
  30.         }  
  31.  
  32.         static void LogUnhandledException(object exceptionobj)  
  33.         {  
  34.             //Log the exception here or report it to developer  
  35.         }  
  36.     } 

此时运行该程序的结果如下:

运行结果

原文标题:如何处理Windows Forms程序中未处理的异常

链接:http://www.cnblogs.com/yinzixin/archive/2009/12/24/1631633.html

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...