C# 政策处理<;例外情况>;与改装包和Xamarin相关的问题

C# 政策处理<;例外情况>;与改装包和Xamarin相关的问题,c#,xamarin.ios,xamarin,mvvmcross,refit,C#,Xamarin.ios,Xamarin,Mvvmcross,Refit,我已经建立了我的Xamarin核心项目,并从中阅读了很多技巧 我有一个简单的服务,用来查看输入的服务器url是否有效:IValidateUrlService 我正在尝试使用库来执行以下操作: var request = new PingUrlRequest(); var validateUrlTask = apiService.UserInitiated.ValidateUrl(request); var response = await Policy .Handle<ApiEx

我已经建立了我的Xamarin核心项目,并从中阅读了很多技巧

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

我正在尝试使用库来执行以下操作:

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);
var request=new PingUrlRequest();
var validateUrlTask=apiService.UserInitiated.ValidateUrl(请求);
var响应=等待策略
.Handle()
.RetryAsync(retryCount:5)
.ExecuteAsync(异步()=>
等待验证(任务);
可达=HandleServerResponse(响应);
除非我有例外,否则这很好用。例如,当我在测试一台服务器时,遇到一个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);
}
试试看
{
var request=new PingUrlRequest();
var validateUrlTask=apiService.UserInitiated.ValidateUrl(请求);
var响应=等待策略
.Handle()
.RetryAsync(retryCount:5)
.ExecuteAsync(异步()=>
等待验证(任务);
可达=HandleServerResponse(响应);
}
捕获(APIE)
{
Mvx.Trace(如StackTrace);
}

但这感觉不正确。。。如果Handle参数不起任何作用,那么将其置于顶部有什么意义?我一定是实施错了!有什么建议吗?

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

如果Handle参数不起任何作用,那么将其置于顶部有什么意义

Handle指定策略应应用的异常类型,以便正确使用

但这感觉不正确

我使用的模式与您在2代码段中使用的模式相同,在imho中没有问题


希望这有帮助

好极了!我假设句柄最终会处理异常,但这是有道理的。谢谢