【发布时间】:2019-10-17 21:48:18
【问题描述】:
我在完成我的重试逻辑代码时遇到了一点麻烦。但是,我无法弄清楚缺少的部分。如何在失败时捕获和记录并使用计时器重试。
这是我的代码。
while (true)
{
var res = await this.httpClientWrapper.......
if (res.IsSuccessStatusCode)
{
var result = await res.Content.......
this.logger.Info($".......
}
if (result.status == "Succesed")
{
return true;
}
else
{
var resContent = await.......
this.logger.Info($.......
await Task.Delay(2000).ConfigureAwait(false);
throw new Exception(resContent);
}
}
【问题讨论】:
-
您的
result变量在if块的范围内声明,因此您无法在下一个if行中访问它。 -
@RufusL 我认为第二个 res 也可能是
await this.httpClientWrapper.......其实...我不知道... -
您不能在抛出异常的同时仍然循环。您必须在循环内处理异常。用
try...catch包围循环内的代码,并在catch中处理异常(日志等)。