gpt4 book ai didi

c# - Policy Handle 与 Refit 包和 Xamarin 相关的问题

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

我已经使用从 here 中读到的很多提示设置了我的 Xamarin 核心项目.

我有一个简单的服务,我用它来查看输入的服务器 url 是否有效:IValidateUrlService

我正在尝试使用 Polly图书馆做这样的事情:

var request = new PingUrlRequest();
var validateUrlTask = apiService.UserInitiated.ValidateUrl(request);

var response = await Policy
.Handle<ApiException>()
.RetryAsync(retryCount: 5)
.ExecuteAsync(async () =>
await validateUrlTask);

reachable = HandleServerResponse(response);

这工作正常,除非我得到一个异常。例如,当我在我测试的一台服务器上收到 ApiException 时;上面的代码没有吸收错误!它只是抛出异常并使程序崩溃。我只能通过这样做让代码正常工作:

try
{
var request = new PingUrlRequest();
var validateUrlTask = apiService.UserInitiated.ValidateUrl(request);

var response = await Policy
.Handle<ApiException>()
.RetryAsync(retryCount: 5)
.ExecuteAsync(async () =>
await validateUrlTask);

reachable = HandleServerResponse(response);
}
catch (ApiException e)
{
Mvx.Trace(e.StackTrace);
}

但这感觉不对……如果 Handle 参数什么都不做,那么将它放在顶部有什么意义呢?我必须实现这个错误!有什么建议吗?

最佳答案

如果 ApiException 被抛出,这意味着 Polly 重试了 5 次来执行您的代码,但每次都失败了,因此这一切都以 ApiException 结束,您需要处理它。

What's the point of having the Handle parameter up top if it doesn't do anything?

Handle 指定您的政策应适用哪种类型的异常(exception),以便您适本地使用它。

But that doesn't feel correct...

我使用的模式与您在 2 个代码片段中使用的模式相同,恕我直言。

希望这对您有所帮助!

关于c# - Policy Handle<Exception> 与 Refit 包和 Xamarin 相关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750520/

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