【发布时间】:2010-10-11 11:39:24
【问题描述】:
相关:
如果一个方法抛出异常,被 ThreadPool.QueueUserWorkItem 方法调用,异常会在哪里抛出?还是直接吃掉?
我的意思是它永远不会被抛出到调用线程,对吧?
【问题讨论】:
标签: c# multithreading threadpool
相关:
如果一个方法抛出异常,被 ThreadPool.QueueUserWorkItem 方法调用,异常会在哪里抛出?还是直接吃掉?
我的意思是它永远不会被抛出到调用线程,对吧?
【问题讨论】:
标签: c# multithreading threadpool
未处理的异常将导致 .Net 2.0 或更高版本中的应用崩溃。 QUWI 代码中的异常不会被捕获或转移到另一个线程。
参见例如 https://blog.codinghorror.com/improved-unhandled-exception-behavior-in-net-20/
【讨论】:
如果未在线程回调中捕获异常,则该异常将使您的应用程序崩溃(被吞下的 ThreadAbortException 和 AppDomainUnloadedException 除外)。请注意,在 .NET 1.1 中,所有异常都被吞没了。 .NET 2.0 中的行为发生了变化。
我找到了这个链接:http://msdn.microsoft.com/en-us/library/ms228965.aspx
【讨论】:
不,异常永远不会传播到另一个线程。它最终会使线程崩溃,并被运行时捕获。此时运行时会引发 AppDomain.UnhandledException 事件,在该事件中可以观察到异常。
您可以阅读有关此here 的更多信息。
【讨论】: