线程池线程的异常
相关:
如果一个方法抛出由 ThreadPool.QueueUserWorkItem 方法调用的异常,该异常将在哪里抛出? 或者它会被吃掉吗?
我的意思是它永远不会被抛出到调用线程上,对吧?
Related:
If a method throws an exceptions that is called by the ThreadPool.QueueUserWorkItem method where will the exception be thrown? or will it just be eaten?
I mean it will never be thrown on the calling thread right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,异常永远不会传播到另一个线程。 它最终会使线程崩溃,并被运行时捕获。 此时,运行时会引发 AppDomain.UnhandledException 事件,可以在其中观察到异常。
您可以在此处了解有关此内容的更多信息。
NO, the exception will never propagate to another thread. It will eventually crash the thread, and be caught by the runtime. At this point the runtime raises the AppDomain.UnhandledException event where the exception can be observed.
You can read more about this here.
如果未在线程回调中捕获该异常,则该异常将使您的应用程序崩溃(被吞噬的 ThreadAbortException 和 AppDomainUnloadedException 除外)。 请注意,在 .NET 1.1 中,所有异常都被吞掉了。 .NET 2.0 中的行为已更改。
我找到了这个链接: http://msdn.microsoft.com/en-us/库/ms228965.aspx
The exception will crash your application if is not caught inside your thread callback (except for ThreadAbortException and AppDomainUnloadedException that are swallowed). Note that in .NET 1.1 all exceptions were swallowed. The behavior was changed in .NET 2.0.
I found this link: http://msdn.microsoft.com/en-us/library/ms228965.aspx
未处理的异常将导致 .Net 2.0 或更高版本中的应用程序崩溃。 QUWI 代码中的异常不会被捕获或转移到另一个线程。
参见例如
https://blog.codinghorror.com/improved-unhandled -net-20 中的异常行为/
Unhandled exceptions will bring down the app in .Net 2.0 or higher. The exception from QUWI code will not be caught or transferred to another thread.
See e.g.
https://blog.codinghorror.com/improved-unhandled-exception-behavior-in-net-20/