如何在asp.net mvc中处理未观察到的exception
我特别询问如何处理未观察到的exception,而不是未处理的exception。 这个问题也与这个问题不同, 这个问题是关于如何引发即发即弃异步方法,而不是如何处理未观察到的exception,尽管它们是相关的。
未观察到的exception是由下面显示的示例引起的类型,取自此处 :
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()吗?
- 这些未观察到的exception是否会进入Application_Error()? 如果是这样,您如何识别它们或阻止它们在Application_Error中出现。
这个问题很相似,但没有令人满意的答案/解释。