首页 > 解决方案 > 当出现异常时,再次执行代码的最佳方法是什么?

问题描述

我正在开发一个应用程序,因为我需要使用具有与之关联的令牌的 Rest API。在令牌获取过期的特定时间间隔之后,因此在这种情况下假设如果我尝试调用该 API,它会引发异常。因此,要解决此问题,我应该刷新 catch 块中的令牌并使用 GoTo 再次执行 try 块。我阅读了几篇文章,其中大多数建议避免使用 GoTo。

以下是我参考的最佳方法链接,但仍然不相信是否使用它:

1>是否可以在 catch 块中捕获异常后再次执行 try 块中的代码?

2> https://blogs.msdn.microsoft.com/abhinaba/2005/10/01/c-try-and-retry/

标签: c#

解决方案


只需在逻辑中输入重试计数并继续跳到循环的下一次迭代:

 int maxRetry = 10;
        for (int i = 0; i<=maxRetry; i++)
        {
            try
            {
                //DO YOUR STUFF
            }
            catch (Exception)
            {
                //OH NOES! ERROR!
                continue; //RETRY!
            }
        }

当它尝试了 10 次后,它就退出了,仅此而已。

你可以用任何你喜欢的循环来释放你的幻想,while,do while等。使用适合你需要的循环。

如果有一些非常糟糕的错误需要停止循环的执行,那么 break 然后抛出异常并使用

  catch(VeryWrongException ex)
  {
      throw;
  } 
  catch (Exception)
  {
       //OH NOES! ERROR!
       continue; //RETRY!
  }

其中 VeryWrongException 是您要实际管理的异常类型,而不是使用前面的 catch 条件。

额外:要了解您的代码可以生成什么样的异常并捕获它们,请使用智能感知,这是您的朋友:

智能感知


推荐阅读