2017-10-17 14 views
0

エラーが発生した場合は、再試行の前にアクションを実行する必要があります。それ以外の場合は、再試行してください。このようなリトライ前のアクション

何か:

try 
{ 
action: 
    <action> 
} 
catch (SpecialException) 
{ 
    <cleanup> 
    goto action: 
} 
catch (Exception) 
{ 
    goto action: 
} 

はポリーと、このことは可能ですか?

答えて

2

登録ハンドルRetry(Action<Exception, int> onRetry)で、処理は再試行の前に実行されます。場合によってはクリアすることができます。

Policy.Handle<Exception>().Retry((ex, count) => { 
    if(ex is NotImplementedException) 
    { 
     Console.WriteLine("clear up"); 
    } 
    }).Execute(() => { 
     Console.WriteLine("throw exception"); 
     throw new Exception();//or NotImplementedException 
    }); 
+1

はい、正確です。 Pollyの 'onRetry'デリゲートフックは、あらゆる種類のリトライポリシー(再試行、n回再試行、retryforever、wait-and-retry)でも利用できます。 'onRetryAsync:'デリゲートフックのように、非同期形式の非同期形式でも利用できます。 Doco、例:https://github.com/App-vNext/Polly/#retry –

関連する問題