Async / Await with throw语句以奇怪的行为结束

时间:2016-10-10 10:51:51

标签: c# async-await

我有一个方法:

public async Task TakeOrder(int orderId)
{
    var request = new Request() { OrderId = orderId, UserId = _myUserId };
    var result = await _service.Request<OrderRequest, OrderResponse>(request);

    if (!result.Body.Success) // guaranteed to be true
    {
        if (result.Body.Error != null)
        {
            throw result.Body.Error;
        }
        else
        {
            throw new Exception("Failed to take order"); // always gets hit
        }
    }
}

所以每当我进入它时,代码运行正常,直到第一个if语句,无论结果如何.Body.Success是真的,它在抛出新的异常后跳转(&#34;未能接受命令&#34 ;)声明。有什么想法吗?

P.S。

我更感兴趣的是为什么它以所描述的方式工作而不是我预期的流程。我可以使代码以其他方式工作,例如使其同步或删除throw语句并将其替换为Console.WriteLine("error");

0 个答案:

没有答案