我思想我会全神贯注于async
方法中的异常,以及任务抛出异常时WhenAll
/ WhenAny
的行为,但是:
internal async Task RunAsync()
{
...
//one of persistenceTask, monitorsTask is going to throw an exeption
var completedTask = Task.WhenAny(persistenceTask, monitorsTask);
await completedTask; //I expect this to thow but it doesn't
}
。
//in a calling method later
var t = await RunAsync();
[completedTask
的状态出现故障时,我可以在调试器中看到内部异常,但是t
最终成功完成。我的[[want是被RunAsync
抛出的异常-我知道,如果任务失败,WhenAny
会not抛出,但是我想如果我await
执行失败的任务(completedTask
])此would抛出。
var completedTask = await Task.WhenAny(persistenceTask, monitorsTask);