我正在使用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中收到一个未处理的错误消息对话框。
答案 0 :(得分:2)
以不同的方式实现它,只是将错误抛出给你想要显示给用户的那些,然后抓住那些你想要抛出的东西并用你的内容做你想做的事情(无论是否显示给用户)。
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