我已经设置了我的 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 参数没有做任何事情,那么它有什么意义呢?我必须执行这个错误!有什么建议么?