c# – Application.ThreadException和AppDomain.CurrentDomain.UnhandledException之间有什么区别?

好吧,这是一个容易的:

> Application.ThreadException和AppDomain.CurrentDomain.UnhandledException之间有什么区别?
>我需要处理这两个吗?

谢谢!

Application.ThreadException特定于Windows窗体。 Winforms运行事件处理程序,以响应Windows发送给它的消息。例如Click事件,我相信你知道他们。如果这样的事件处理程序抛出一个异常,那么在Winforms消息循环中有一个后台拦截该异常。

那个逆止器触发Application.ThreadException事件。如果你不覆盖它,用户将得到一个ThreadExceptionDialog.这允许他忽略该异常,并继续运行您的程序。不是一个好主意。

您可以通过在Program.cs的Main()方法中调用Application.SetUnhandledExceptionMode()来禁用此行为。没有那个反馈,当一个线程从未处理的异常中消失时,就会发生这种情况:AppDomain.UnhandledException激发并且程序终止。

Fwiw:“ThreadException”是一个非常糟糕的名称选择。它与线程无关。

http://stackoverflow.com/questions/2014562/whats-the-difference-between-application-threadexception-and-appdomain-currentd

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – Application.ThreadException和AppDomain.CurrentDomain.UnhandledException之间有什么区别?