我正在尝试从需要调用的异步方法中获取异常,例如:
public async Task MyFirstMethod()
{
await Check(() => Test("test"));
}
private async Task<TResult> Check<TResult>(Func<TResult> function)
{
try
{
await Task.Run(() => function());
...
}
catch(Exception exception)
{
<<<Reach here>>>
}
}
private async Task<string> Test(string s)
{
await Task.Run(() => s.ToList());
throw new Exception("Exception Test");
}
如果Test方法不是异步的,而我只是在Check方法中调用function(),则此方法有效。 我在做什么错了?
谢谢。
解决方案:
private async Task<TResult> Check<TResult>(Func<TResult> function)
至private async Task<TResult> Check<TResult>(Func<Task<TResult>> function)
答案 0 :(得分:-3)
之所以会发生这种情况,是因为您没有在相同的上下文中捕获引发异常的地方。
尝试一下
private async Task<TResult> Check<TResult>(Func<TResult> function)
{
await Task.Run(() => {
try
{
function();
}
catch(Exception exception)
{
// do whatever
}
});
}