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 パラメーターを一番上に置くことのポイントは何ですか? 私はこれを間違って実装しなければなりません!助言がありますか?