您好,我想捕获异步方法的异常,但看起来这个例子不起作用:
public void TryToCatchException()
{
try
{
_ =LongRunningMethod();
}
catch (MyException)
{
Console.WriteLine("catched");
}
}
public static async Task LongRunningMethod()
{
await Task.Run(() =>
{
try
{
Task.Delay(1000); //simulation of work
throw new ArgumentException(); // this is a example
}
catch (ArgumentException)
{
throw new MyException;
}
});
}
如果我启动调试器会说没有捕获到异常“MyException”...有人可以帮助我吗?
答案 0 :(得分:3)
当您放弃任务时,不会观察到这些异常:
_ =LongRunningMethod();
如果您想从 LongRunningMethod
中捕获异常,那么您需要 await
从该方法返回的任务:
await LongRunningMethod();