分享

C#.NET

 小茂。 2012-02-16

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

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

首先介绍相应的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);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多