【问题标题】:Exceptions on threadpool threads线程池线程的异常
【发布时间】:2010-10-11 11:39:24
【问题描述】:

相关:


如果一个方法抛出异常,被 ThreadPool.QueueUserWorkItem 方法调用,异常会在哪里抛出?还是直接吃掉?

我的意思是它永远不会被抛出到调用线程,对吧?


【问题讨论】:

标签: c# multithreading threadpool


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      您可以阅读有关此here 的更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-11
        • 1970-01-01
        • 2014-08-07
        • 2013-02-27
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        相关资源
        最近更新 更多