c# - Program.cs 中的 Try-Catch 仅在从 visual studio 启动时有效

标签 c# visual-studio-2010 try-catch

我试图为未捕获的实验写一个小的崩溃报告器。在 VS 中启动我的应用程序时,这非常有效。 但是,一旦我尝试启动 .exe,它只会向我显示标准的“有一个未捕获的 expetion”- 来自 Windows 的东西。 不,崩溃的不是崩溃报告程序。

这是我在 Program.cs 中的代码

        try
        {
            Application.Run(new TestServer());
        }
        catch (Exception e)
        {
            Application.Run(new CrashReporter(e.StackTrace.ToString()));
        }
    }

最佳答案

这是因为您使用了调试器。 Winforms 检测到这一点并禁用 Application.ThreadException 的事件处理程序。这很重要,它可以让您调试异常。为了让您的 catch 子句在没有调试器的情况下工作,您必须在 Run() 调用之前将此语句添加到您的 Main() 方法中:

   Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);

现在为 AppDomain.Current.UnhandledException 编写事件处理程序确实更有意义,您还将收到有关工作线程中未处理异常的通知。

关于c# - Program.cs 中的 Try-Catch 仅在从 visual studio 启动时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796426/

相关文章:

c# - 图像未在 IE 表单 base64 中显示

c# - WPF项目中MVVM和MVC之间的主要区别是什么?

c# - 如何通过按钮控制将 Fez Panda II 设置为 'Sleep' 模式?

java - 指定抛出 IOException

python - 如何将 Python 脚本转换为 Lua 脚本?

c# - C# 的空合并运算符 (??) 的右侧是否被延迟计算?

c# - 跨多个 HTTP 请求拆分的多步数据库事务

c# - 将一些dll编译成另一个dll

c++ - 我对 SDL 的简单介绍程序没有构建。为什么我会收到这些链接器错误?

r - 错误: Results are not data frames at positions: