加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 处理Application.ThreadException和在Try / Catch中包装Ap

发布时间:2020-12-16 01:49:52 所属栏目:百科 来源:网络整理
导读:是否有任何理由更喜欢在 Windows窗体应用程序中实现全局异常处理程序的这些方法之一? 第一种方法 static void Main(string[] args) { try { System.Windows.Forms.Application.Run(mainform); } catch (Exception ex) { // Log error and display error mes
是否有任何理由更喜欢在 Windows窗体应用程序中实现全局异常处理程序的这些方法之一?

第一种方法

static void Main(string[] args) 
{
    try
    {
        System.Windows.Forms.Application.Run(mainform);
    }
    catch (Exception ex)
    {
        // Log error and display error message
    }
}

第二种方法

static void Main(string[] args) 
{
    System.Windows.Forms.Application.ThreadException += 
        new ThreadExceptionEventHandler(Application_ThreadException);
    System.Windows.Forms.Application.Run(mainform);
}

static void Application_ThreadException(object sender,ThreadExceptionEventArgs e)
{
    // Log error and display error message
}

处理ThreadException事件会给你一些try / catch没有的东西吗?

解决方法

我对这种行为的理解是,添加一个 ThreadException处理程序将导致表单中未处理的异常被此处理程序捕获和处理,这将允许应用程序继续运行.

在try / catch设计中,表单中的第一个未处理的异常将导致应用程序停止.您将捕获异常,但应用程序将结束.

请注意,在某些情况下还会引发一个AppDomain.UnhandledException事件(主窗口表单线程以外的线程中未处理的异常并且没有捕获ThreadException),所有这些都是对您的应用程序非常不利的消息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读