如何在asp.net mvc中处理未观察到的异常

时间:2013-08-29 03:42:39

标签: c# asp.net asp.net-mvc-4

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

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

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

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

现在,我认为我们可以在here中执行类似这样的示例:

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中出现。

This question类似,但没有令人满意的答案/解释。

0 个答案:

没有答案