重试前的操作

Action before retry

我有这个用例,对于某些错误,我需要在重试之前执行操作;否则,请重试。

像这样:

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

Polly 可以吗?

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
    });