Я планирую использовать Polly для создания политики для регистрации исключение и повторный выброс. Я не нашел существующего метода, который позволял бы это делать из коробки, но некоторые варианты, которые я вижу,
Резерв
// Specify a substitute value or func, calling an action (e.g. for logging)
// if the fallback is invoked.
Policy.Handle<Whatever>()
.Fallback<UserAvatar>(UserAvatar.Blank,
onFallback: (exception, context) =>
{
_logger.Log(exception, context);
throw exception;
});
Вопрос: можно ли генерировать исключение из Fallback?
Тайм-аут
Policy.Timeout(1, T30meoutStrategy.Pessimistic,
(context, timespan, task) =>
{
// ContinueWith important!: the abandoned task may very well still be executing,
// when the caller times out on waiting for it!
task.ContinueWith(t =>
{
if (t.IsFaulted)
{
logger.Error(context,t.Exception);
throw exception;
}
});
}
Или Повторить
Policy.Handle<DivideByZeroException>().Retry(0,
(exception, retryCount) =>
{
logger.Error(context,exception);
throw exception;
});
Вопрос: поддерживается ли 0 попыток?
Или KISS и напиши просто попробуй / поймай с броском самостоятельно.
Какой из этих методов лучше? Что вы порекомендуете?