C# 捕获winforms中的异常而不停止应用程序

C# 捕获winforms中的异常而不停止应用程序,c#,winforms,exception-handling,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 } } 这工作正常,

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

static void Main()
{
    try
    {
        // Set up application
        Application.Run();
    }
    catch (Exception ex)
    {   
        // construct log from ex
        log.Save(); // saves to db
    }
}
这工作正常,并且正在根据需要将日志保存到数据库中。但是,应用程序随后关闭

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

查看事件


然而,您可能真的想重新审视您的体系结构;通常,您无法从任意
异常中正常恢复
,您可以使用
应用程序.ThreadException
事件

在调用
应用程序之前,运行
,将委托挂接到事件

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

如果没有具体的代码问题向我们展示您在示例中遇到的问题,那么这一问题的可能重复性就太大了。答案显然是,“当然有办法!”但这已经是最好的了。可能的重复不会很好。只有在使用调试器运行时才能捕获任何内容。当您不应该这样做时,因为这使得调试异常非常困难。您需要删除此代码。当抛出异常的代码没有处理异常时,停止假设您可以处理异常。例外是你的朋友,他们告诉你做错了什么。永远不要忽视好的建议。