What's the difference between Application.ThreadException and AppDomain.CurrentDomain.UnhandledException?
好吧,这很简单:
Application.ThreadException 和AppDomain.CurrentDomain.UnhandledException 有什么区别?我需要两者都处理吗?
谢谢!
应用.threadexception is specific to windows forms.Winforms runs event handlers in response to message sent to it by windows.例如,点击事件,我敢肯定你知道他们。如果一个事件牵着一个例外,那么在窗口信息环中有一个后退停车,这是一个例外。
后台消防的应用程序.螺旋接收事件。如果你不超越这一点,使用者会得到一个长度。让他忽视例外,并继续运行你的程序。不是一个伟大的想法
您可以通过呼叫应用来切断此行为。在程序中设置一个主()方法。没有后台,通常的事情发生在一个无人驾驶的例外:Appdomain.unhandlexception fires和程序终端。
FWIW"Threadexception"was a very poor name choice.这没有什么可威胁的。
在使用视窗格式的应用中,未处理的例外情况在主要应用上导致
与视觉工作室2005年开始,视觉基本应用框架为在主要应用线上未处理的例外提供了另一个事件。这项活动有一个以同一名称作为Appdomain.unhandledexception所用的事件论据对象的事件论据对象,但具有不同的性质。具体而言,该事件的论据对象具有一个
一般来说,应用不是一个伟大的想法,但对于应用如周期性运行,这是一个很好的解决办法。
在视窗格式不创建和拥有的情况下,使用
与网络4开始,这一事件并不是为了使例外情况变得更为严重,例如,堆栈过度流动或进入侵权行为,除非事件的残疾者是安全的关键,并且具有EDOCX1[…]的属性。]14.This event is not raised for exceptions that corrrupt the state of the process,as stack overflows or access violations,unle
For more details,see MSDN.
OK-I had it in front of me,this bit of code from MSDN is pretty self-explanatory:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public static void Main(string[] args) { // Add the event handler for handling UI thread exceptions to the event. Application.ThreadException += new ThreadExceptionEventHandler(ErrorHandlerForm.Form1_UIThreadException); // Set the unhandled exception mode to force all Windows Forms // errors to go through our handler. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); // Add the event handler for handling non-UI thread exceptions to the event. AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); // Runs the application. Application.Run(new ErrorHandlerForm()); } |
如果你用一个不处理的例外代码代码,那么事情就是这样的。
简单的第二个方法是创建一个无尝试的应用程序,一个例外。
现在如果你需要保险,你可以同时处理他们,但如果你抓住并处理你的