Polly 重试总是抛出 System.AggregateException 而不是自定义异常



正如标题所说,我使用 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。这是有意的行为还是我做错了什么?

在您的ExecuteAsync呼叫中,您没有等待代表。
await 关键字将从AggregateException中解包您的自定义异常。

首选方式:

.ExecuteAsync(async () => await customAction?.Invoke());

相关内容

  • 没有找到相关文章

最新更新