C#处理WindowForm程序中未捕获的异常

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

首先介绍相应的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()
        {
            Application.ThreadException += Application_ThreadException;
            Application.Run(new FrmMain());
        }
        static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
        {
            //作为示例,这里用消息框显示异常的信息
            MessageBox.Show(e.Exception.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值