我特别询问如何处理未观察到的异常,而不是未处理的异常。这个问题也不同于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();
};
但是,我的问题是: -
This question类似,但没有令人满意的答案/解释。