C# 中不 await async 异步方法时的异常捕获问题

2019-10-25 20:58发布

请问在 .NET Core/C# 中如果调用一个异步方法时不对这个异步方法进行 await ,异步方法在执行过程中如果发生了异常,该异常是否能捕获到?

标签: c# await
3条回答
我命由我不由天
2楼-- · 2019-10-25 21:32

放到Result不就相当于“同步”捕获了。

查看更多
该账号已被封号
3楼-- · 2019-10-25 21:39

try{
tak.run(async()=>{task.delay(1000);throw new exception()})
}catch(exception ex){
//抓不到ex
}
appdomain.unhandledexception+= obj,ex=>{
//异常跑这里
}

查看更多
三岁会撩人
4楼-- · 2019-10-25 21:47

从同事那学到一招也是唯一的一招捕获异常方法,在所调用的异步方法中进行 catch ,如果不这样就捕获不到异常

public async Task<IActionResult> Index()
{
    RequestAsync();
    return Ok();
}

private async Task RequestAsync()
{
    try
    {
        var client = _httpClientFactory.CreateClient();
        client.Timeout = TimeSpan.FromMilliseconds(1);
        var response = await client.GetAsync("https://www.cnblogs.com/");                
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "RequestAsync");
    }
}
查看更多
登录 后发表回答