我试图为未捕获的实验写一个小的崩溃报告器。在 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/