方法结束时异步/等待引发异常

时间:2019-02-14 13:05:04

标签: c# .net

如果满足条件,我的异步方法将在最后抛出异常。事实证明,它总是抛出例外。为什么? (VS 2015.NET 4.7.1)

事实证明,如果我添加多余的返回或等待Task.CompletedTask,它会按预期工作

这引发异常:

public static async Task Test()
{
    var date1 = new DateTime(2019, 1, 1);
    var date2 = new DateTime(2018,1,1);
    var t = date1 < date2;
    if (t)
    {
        throw new InvalidOperationException();
    }
}

这不是:

public static async Task Test()
{
    var date1 = new DateTime(2019, 1, 1);
    var date2 = new DateTime(2018,1,1);
    var t = date1 < date2;
    if (t)
    {
        throw new InvalidOperationException();
    }
    return;
}

这是怎么回事?

更新 事实证明,该异常并未真正引发。仅仅是VS调试器,给人留下了进入抛出异常的代码的印象,如下面的屏幕截图

Visual Studio debugging screenshot Screenshot

0 个答案:

没有答案