zoukankan      html  css  js  c++  java
  • WinForm程序中未处理异常的解决方法(转)

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

    //--tip

    //----

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

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

    运行结果

  • 相关阅读:
    AdaBoost
    svm算法
    DBSCAN算法
    聚类算法分类
    EM算法
    ios开发中使用FMDB
    eclipse配置mahout
    【MyBatis】Mapper XML 文件
    MyBatis Generator的使用
    IntelliJ IDEA 创建 Maven简单项目
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/1858229.html
Copyright © 2011-2022 走看看