使用 Polly 时抛出特定异常
Throwing specific exception when using Polly
我使用 polly 策略通过以下方式进行重试:
results = await Policy
.Handle<WebException>()
.WaitAndRetryAsync
(
retryCount: 5,
sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
)
.ExecuteAsync(async () => await task.Invoke());
我正在使用 AsyncErrorHandler 来处理所有网络异常:
public static class AsyncErrorHandler
{
public static void HandleException(Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
但是我想对 GUI 提出一些期望。
有了这段代码,我如何才能阻止处理特定异常并将其抛给 GUI?
[更新] 如果我在 HandleException 函数中抛出一个特定的异常,我会在 Visual Studio.
中收到一个未处理的错误消息对话框
以不同的方式实现它,只在您想要向用户显示的错误上抛出错误,然后捕获您想要抛出的错误,并根据其内容执行您想要的操作(向用户显示或不显示)。
try
{
results = await Policy
.Handle<WebException>()
.WaitAndRetryAsync
(
retryCount: 5,
sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
)
.ExecuteAsync(async () => await task.Invoke());
}
catch (ExceptionToThrowToUser ex)
{
MessageBox.Show(ex.Message);
}
public static class AsyncErrorHandler
{
public static void HandleException(Exception ex)
{
if (ex is ExceptionToThrowToUser)
{
throw;
}
else
Debug.WriteLine(ex.Message);
}
}
为更新而编辑。
如需帮助处理错误:Best practices for catching and re-throwing .NET exceptions
我使用 polly 策略通过以下方式进行重试:
results = await Policy
.Handle<WebException>()
.WaitAndRetryAsync
(
retryCount: 5,
sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
)
.ExecuteAsync(async () => await task.Invoke());
我正在使用 AsyncErrorHandler 来处理所有网络异常:
public static class AsyncErrorHandler
{
public static void HandleException(Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
但是我想对 GUI 提出一些期望。 有了这段代码,我如何才能阻止处理特定异常并将其抛给 GUI?
[更新] 如果我在 HandleException 函数中抛出一个特定的异常,我会在 Visual Studio.
中收到一个未处理的错误消息对话框以不同的方式实现它,只在您想要向用户显示的错误上抛出错误,然后捕获您想要抛出的错误,并根据其内容执行您想要的操作(向用户显示或不显示)。
try
{
results = await Policy
.Handle<WebException>()
.WaitAndRetryAsync
(
retryCount: 5,
sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
)
.ExecuteAsync(async () => await task.Invoke());
}
catch (ExceptionToThrowToUser ex)
{
MessageBox.Show(ex.Message);
}
public static class AsyncErrorHandler
{
public static void HandleException(Exception ex)
{
if (ex is ExceptionToThrowToUser)
{
throw;
}
else
Debug.WriteLine(ex.Message);
}
}
为更新而编辑。
如需帮助处理错误:Best practices for catching and re-throwing .NET exceptions