タイトルの通り、Pollyを使ってリトライの仕組みを作りました。問題は、独自のカスタム例外ではなく、常に System.AggregateException を取得することです。ここにコードを追加します。
これは、私が作成した polly 静的クラスです。
public static class PollyExtension
{
public static Task<T> RetryRequestWithPolicyAsync<T,T1>(
Func<Task<T>> customAction,
int retryCount,
TimeSpan pauseSecondsBetweenFailures) where T1 : Exception
{
return
Policy
.Handle<T1>()
.WaitAndRetryAsync(retryCount, i => pauseSecondsBetweenFailures).ExecuteAsync(() => customAction?.Invoke());
}
}
リトライ ポリーの実際の呼び出しは次のとおりです。
var result= await PollyExtension.RetryRequestWithPolicyAsync<int, CustomException>( () =>
{
if (1 + 1 == 2)
{
throw new MyException("test");
}
else
{
throw new CustomException("test");
}
},
1,
TimeSpan.FromSeconds(1));
MyException をスローすると、polly も呼び出し元メソッドに MyException をスローすることが期待されます。代わりに、スローされる例外は System.AggregateException です。
ここで何が間違っていますか?ありがとう
編集 1: さらにデバッグした後、AggregateException が内部例外として MyException を持っているようです。これは意図した動作ですか、それとも何か間違っていますか?