我有一个奇怪的问题。假设您有以下内容:
Application.ThreadException += something;
try
{
Application.Run(new Form1());
}
catch (Exception ex)
{
}
现在在应用程序的某个地方发生异常,Vista会引发ThreadException
事件,但XP会直接跳转到catch块。
如何使处理行为相同?在something
我需要处理一些清理工作,但它永远不会用XP。因此,FormClosing
事件永远不会从catch块触发,因为所有表单都在该阶段处理。
注意:
由于
答案 0 :(得分:2)
您可以订阅AppDomain.CurrentDomain.UnhandledException
活动。如果应用程序没有处理它的异常,那总是抛出。
顺便说一句,据我所知,围绕Application.Run()语句的try-catch被认为是不好的做法。
答案 1 :(得分:1)
也许UnhandledExceptionMode
在Vista上有不同的默认值?你试过这种设置吗?您可以通过调用
// Set the unhandled exception mode to force all Windows Forms errors to go
// through our handler.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);