Winforms毫不客气地退出“未处理的异常”

时间:2009-01-09 17:22:16

标签: c# .net winforms exception

该程序吐出其中一个框,表示发生了未处理的异常,应用程序必须退出。解决问题的唯一线索就是事件日志:

  

事件类型:错误   事件源:.NET Runtime 2.0错误报告   活动类别:无   事件ID:5000   日期:2009年9月9日   时间:上午8:47:44   用户:N / A.   电脑:DADIEHL   描述:   EventType clr20r3,P1 crm.client.exe,P2 1.0.1.0,P3 49667f61,P4 mscorlib,P5 2.0.0.0,P6 471ebc5b,P7 c35,P8 59,P9 system.formatexception,P10 NIL。

所以我将以下代码添加到program.cs:

try
{
    Application.Run(new WindowContainer());
}
catch (Exception exc)
{
    new DialogException(exc).ShowDialog();
}

这样我就可以捕获任何异常,但是用户仍然会收到相同的消息,说该应用必须退出。我无法在我的计算机上重现这一点,因此无法使用调试器来缩小范围。有没有人知道如何收集更多信息或有任何想法是什么问题?

2 个答案:

答案 0 :(得分:15)

很可能是异常被抛出在另一个线程上。

您可能想要将处理程序添加到的两个事件:

添加记录异常的处理程序,您将获得更多信息。

非UI线程中未处理异常的行为从.NET 1.1更改为2.0。他们曾经被吞下但现在他们停止了应用程序。如果你愿意,你可以使用app.config标志来选择旧的行为 - 但不是真的推荐,因为另一个线程中的例外可能意味着你的应用现在不稳定。我不记得那时的设置细节,但如果你愿意,我可以查看它们。

答案 1 :(得分:0)

如果您不想在此时更改代码,我可能会使用带有SOS扩展名的WinDbg,因此您至少可以获得堆栈跟踪 - 这些类型的崩溃非常方便。

Real World Walkthrough w/WinDbg

您可以尝试处理UnhandledExceptionEvent。来自MSDN:

UnhandledExceptionEvent