gpt4 book ai didi

c# - 为什么我的 try/catch block 没有捕获 System.AggregateException?

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:40 25 4
gpt4 key购买 nike

我有一些代码可以像这样进行异步 http 调用:

try
{
var myHttpClient = new HttpClient();
var uri = "http://myendpoint.com";

HttpResponseMessage response = client.GetAsync(uri).Result;
}
catch (Exception ex)
{
Console.WriteLine("an error occurred");
}

大多数情况下这工作正常,但偶尔我会得到一个 System.AggregateException,它显示 One or more error occurred。 ---> System.AggregateException:发生一个或多个错误。 ---> System.Threading.Tasks.TaskCanceledException:任务已取消。 --- 内部异常堆栈跟踪结束

在上面的例子中,我的 catch 语句从未到达,我不确定为什么。我知道 Tasks 在抛出异常时有一些复杂的因素,但我不知道如何在我的 catch 语句中处理它们?

最佳答案

异常不会在您的 try/catch 的同一个线程中抛出。这就是为什么你的 catch block 没有被执行。

检查 this article about HttpClient :

try
{
HttpResponseMessage response = await client.GetAsync("api/products/1");
response.EnsureSuccessStatusCode(); // Throw if not a success code.

// ...
}
catch (HttpRequestException e)
{
// Handle exception.
}

关于c# - 为什么我的 try/catch block 没有捕获 System.AggregateException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31300311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com