【问题标题】:Does try/catch work outside of Task.Factory.StartNew? [duplicate]try/catch 是否在 Task.Factory.StartNew 之外工作? [复制]
【发布时间】:2013-12-11 04:45:43
【问题描述】:

以下是否会捕获 StartNew() 内部发生的异常?好像没有。

   try
   {
      Task.Factory.StartNew(() =>
      {
       //do something
      });
    }
    catch(Exception ex)
    {
      //log it
    }

【问题讨论】:

  • Will the following catch an exception that occurs inside of StartNew() : 不会。新任务一开始,try 就会退出。

标签: .net c#-4.0


【解决方案1】:

没有。创建新任务后,您的 try 块将退出。

你可以捕获异常。请参见: Catching Error when using Task.Factory 了解更多信息。

【讨论】:

    【解决方案2】:

    不能,因为当try 退出时,任务还没有完成。无法知道将来是否会发生异常。

    任务的重点是开始一个异步的、独立的计算。

    【讨论】:

    • 另外,任务在不同的线程上执行,所以即使它在 try 块结束之前完成也没关系。
    • 是的。我试图表明一个逻辑上的矛盾,为什么不可能发生捕获被击中的情况。您无需对 TPL 有任何了解即可得出该结论。
    猜你喜欢
    • 2021-11-25
    • 2013-11-14
    • 2012-11-25
    • 2012-05-26
    • 1970-01-01
    • 2020-01-24
    • 2011-01-05
    • 2012-11-12
    • 2013-10-07
    相关资源
    最近更新 更多