gpt4 book ai didi

c# - 捕获超时异常

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

我正在开发一个 wp8 应用程序,我使用 HttpClient 来执行 PostAsync 和 GetAsync 操作,我将超时设置为 1 秒:

private HttpClient client = new HttpClient();
client.Timeout = TimeSpan.FromMilliseconds(1000);

我在 Get 和 Post 操作上有一个 try catch block 来捕获 TimeOutExceptions 作为:

try
{
var response = await client.PostAsync(param1,param2);
}
catch (TimeoutException e)
{
//do something
}

尽管如此,我的 catch block 没有捕获异常,我调试我的应用程序并观察抛出的异常是 TaskCanceledException,“我怎样才能捕获正确的异常?”,“为什么要替换 TimeOutException?”

最后,为了避免混淆,我的实际超时将是 10 秒,我使用 1 秒只是为了测试,如果超过超时,我需要向用户显示一条消息。

最佳答案

在 HttpClient PostAsync 上,超时不会作为 TimeoutException 发送。它作为 TaskCanceledException 发送。

我所看到的文档并非 100% 清楚,但您得到的行为是正确的行为。当达到超时时,将抛出 TaskCanceledException。

This makes a little bit of sense if you look here | HttpClicent.Timeout Property

You may also set different timeouts for individual requests using a CancellationTokenSource on a task.

关于c# - 捕获超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19818631/

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