在不停止应用的情况下捕获winforms中的异常

时间:2017-02-13 14:56:05

标签: c# winforms exception-handling

我有一个winforms应用程序,而Program.cs看起来像这样:

static void Main()
{
    try
    {
        // Set up application
        Application.Run();
    }
    catch (Exception ex)
    {   
        // construct log from ex
        log.Save(); // saves to db
    }
}

这很好用,并且日志会根据需要保存到数据库中。但是,申请后来关闭。

有没有办法可以捕获异常并记录它们,然后继续运行应用程序?上面的代码只是一个示例 - 实际上,如果抛出异常,将会完成一些工作。

2 个答案:

答案 0 :(得分:2)

查看AppDomain.FirstChanceException事件。

但是,您可能真的想重新审视您的架构;一般来说,无法优雅地从任意Exception中恢复。

答案 1 :(得分:-1)

您可以使用Application.ThreadException事件。

在致电Application.Run之前,请将代表挂钩到活动。

Application.ThreadException += (s, e) => 
{
    // construct log
    log.Save();
}