• 体面地处理程序的未捕获异常


    经常有客户抱怨程序遇到错误的时候程序就退出了,甚至来不及保存窗体的输入数据,如果是普通的搜索界面也就罢了,但如果客户是呼叫中心,问题就严重了.按道理,我们的程序员应该处理所有的异常,但有事实上做到的很难,因为出乎意料的情况太多了.

    在这篇文章,我给大家介绍一下我的处理方法。

    首先介绍相应的C#相关知识:

    System.Windows.Forms.Application类

    提供 static 方法和属性以管理应用程序,例如启动和停止应用程序、处理 Windows 消息的方法和获取应用程序信息的属性。

     

    System.Windows.Forms.Application.ThreadException 事件

    在发生未捕获线程异常时发生。

     

    System.Windows.Forms.Application.SetUnhandledExceptionMode()方法

    指示应用程序如何响应未处理的异常。

    • SetUnhandledExceptionMode(UnhandledExceptionMode)

      指示应用程序如何响应未处理的异常。

    • SetUnhandledExceptionMode(UnhandledExceptionMode, Boolean)

      指示应用程序如何响应未处理的异常,同时可选择应用特定于线程的行为。

    System.Windows.Forms.UnhandledExceptionMode枚举

    定义 Windows 窗体应用程序应在何处发送未处理的异常。

    public enum UnhandledExceptionMode

    {

    Automatic,        //将所有异常都传送到 ThreadException 处理程序,除非应用程序的配置文件指定了其他位置。

    ThrowException,    //从不将异常传送到 ThreadException 处理程序。忽略应用程序配置文件。

    CatchException        //始终将异常传送到 ThreadException 处理程序。忽略应用程序配置文件。

    }

    以下是我的实现示例:

    /// <summary> 
    /// 应用程序的主入口点。 
    /// </summary> 
    [STAThread] 
    static void Main() 

         
        
    //应用程序的主入口点添加ThreadException的事件处理。 
        Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); 
         

     
    static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) 

        
    //作为示例,这里用消息框显示异常的信息 
        MessageBox.Show(e.Exception.Message,"异常",MessageBoxButtons.OK,MessageBoxIcon.Error); 
    }

  • 相关阅读:
    CodeForces 757C Felicity is Coming!(排列组合)
    Ural 1519 Formula 1( 插头dp )
    FZU 2187 回家种地 ( 扫描线 + 离散 求矩阵单次覆盖面积 )
    HDU 1255 覆盖的面积 ( 扫描线 + 离散 求矩阵大于k次面积并 )
    ZOJ 3841 Cards
    HDU 4012 Paint on a Wall(状压+bfs)
    Topcoder SRM653div2
    2015 GDUT校赛
    Topcoder SRM652div2
    CodeChef A String Game(SG)
  • 原文地址:https://www.cnblogs.com/cgzwwy/p/1280597.html
Copyright © 2020-2023  润新知