0

我特别询问如何处理未观察到的异常,而不是未处理的异常。这个问题也与这个问题不同,后者询问如何提出即发即弃的异步方法,而不是如何处理未观察到的异常,尽管它们是相关的。

未观察到的异常是由下面显示的示例引起的类型,取自此处

Task op1 = FooAsync(); 
Task op2 = BarAsync(); 
await op1; 
await op2;

作为一项规则,我会尽量避免这种情况,但如果发生这种情况,我不希望我的网站意外退出,也不希望这些异常被默默吞下。我至少想在一个地方处理它们并记录它们。我不想用elmah。

现在,我认为我们可以从这里做类似这个例子的事情:

TaskScheduler.UnobservedTaskException += (sender, e) => 
{ 
    Console.WriteLine("Saving the day! This exception would have been unobserved: {0}", 
                      e.Exception); 
    e.SetObserved(); 
};

但是,我的问题是: -

  • 这个放在哪里,可以放在 Application_Start() 中吗?
  • 这些未观察到的异常会进入 Application_Error() 吗?如果是这样,您如何识别它们或防止它们出现在 Application_Error 中。

这个问题类似,但没有令人满意的答案/解释。

4

0 回答 0