內例外,我有這樣的代碼:捕獲一個異步委託
public async Task AsyncMethod()
{
await Task.Factory.StartNew(() =>
{
throw new Exception();
});
}
public ActionResult Index()
{
var t1 = Task.Factory.StartNew(() => { throw new Exception(); });
var t2 = Task.Factory.StartNew(() => { throw new Exception();});
var t3 = Task.Factory.StartNew(async() => { await AsyncMethod(); });
try
{
Task.WaitAll(t1, t2, t3);
}
catch (AggregateException ex)
{
var count1 = ex.InnerExceptions.Count;
var count2 = ex.Flatten().InnerExceptions.Count;
throw;
}
return View();
}
我想明白爲什麼COUNT1 COUNT2和變量是2,而不是3,我怎麼能進去AsyncMethod第三個例外呢?
你的回答比我的完整。我建議它被接受。 – usr
我試過你的代碼版本,但它沒有打到AggregateException的catch,因爲'await Task.WhenAll'這行引發了一個System.Exception與.Message'類型'System.Exception'的異常被拋出。 – MuriloKunze
@MuriloKunze:你是對的。我更新了代碼以顯示用'WhenAll'處理異常的另一種方法。 –