7

有关的:


如果某个方法抛出了由 ThreadPool.QueueUserWorkItem 方法调用的异常,该异常将在哪里抛出?还是只会被吃掉?

我的意思是它永远不会被扔到调用线程上,对吗?


4

3 回答 3

4

不,异常永远不会传播到另一个线程。它最终会使线程崩溃,并被运行时捕获。此时,运行时会引发 AppDomain.UnhandledException 事件,在该事件中可以观察到异常。

您可以在此处阅读有关此内容的更多信息。

于 2009-03-05T10:41:54.867 回答
4

如果未在您的线程回调中捕获该异常(被吞下的 ThreadAbortException 和 AppDomainUnloadedException 除外),则该异常将使您的应用程序崩溃。请注意,在 .NET 1.1 中,所有异常都被吞没了。这种行为在 .NET 2.0 中发生了变化。

我找到了这个链接:http: //msdn.microsoft.com/en-us/library/ms228965.aspx

于 2009-03-05T10:43:29.793 回答
1

未处理的异常将在 .Net 2.0 或更高版本中关闭应用程序。QUWI 代码中的异常不会被捕获或转移到另一个线程。

参见例如 https://blog.codinghorror.com/improved-unhandled-exception-behavior-in-net-20/

于 2009-03-05T10:41:41.920 回答