我认为异步方法应该像普通方法一样,直到它们到达等待状态。
为什么这不会引发异常?
有没有一种方法可以在不等待的情况下引发异常?
using System;
using System.Threading.Tasks;
public class Test
{
public static void Main()
{
var t = new Test();
t.Helper();
}
public async Task Helper()
{
throw new Exception();
}
}
按照设计,在async
方法中引发的异常存储在返回的任务中。要获得异常,您可以:
Await
任务:Await t.Helper();
wait
任务:t.helper().wait();
exception
属性:var task=t.helper();日志(Task.Exception);
t.Helper().ContinueWith(t=>Log(t.Exception),TaskContinuationOptions.OnlyOnFaulted);
你最好的选择是第一个。只需await
任务并处理异常(除非有特定原因不能这样做)。NET 4.5中任务异常处理的更多信息