继续this问题,如果任务被取消,我想做的是尝试重试同一Web API调用3次,因为该任务有时而不是每次都引发错误。
我写了以下内容:
int maxattempts = 3;
int attemptcount = 1;
try
{
LogMessage("JobURL call start 1st time");
response = await SendHttpRequest();
LogMessage("JobURL call end");
}
catch (TaskCanceledException tex)
{
attemptcount++;
if (attemptcount < maxattempts){
LogMessage("JobURL call start " + attemptcount.toString() + " time...");
response = await SendHttpRequest();
}
}
catch (Exception ex2)
{
LogMessage("Exception Details : " + ex2.Message);
LogMessage("Exception StackTrace : " + ex2.StackTrace);
}
我从SendHttpRequest()
方法中引发异常,在调用方法中,我正在检查异常的类型,如果是TaskCanceledException
,则再次调用同一方法。现在,我想尝试3次,然后放弃。
所以我应该在catch块中再次编写try catch以进行第三次尝试。我以某种方式感到这是编写代码的非常粗略的方式。谁能指导我如何以有效的方式写这篇文章?非常感谢!
答案 0 :(得分:0)
您可以为此使用新的C#异常过滤器
类似的东西:
catch (Exception e) when (attemptcount < maxattempts)
{
}
这好像在maxattempts
例如参见https://www.thomaslevesque.com/2015/06/21/exception-filters-in-c-6/