如果发生特定异常,重新运行try块的简单方法?

时间:2019-01-27 18:54:05

标签: python django python-3.x exception try-catch

我正在使用Python 3.7和Django,试图弄清楚如果抛出特定异常,如何重新运行try块。我有

for article in all_articles:
    try:
        self.save_article_stats(article)
    except urllib2.HTTPError as err:
        if err.code == 503:
            print("Got 503 error when looking for stats on " + url)
        else:
            raise

我想要的是如果发生503错误,请重新运行“ try”中的部分,最多3次。有没有简单的方法可以在Python中做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以在for循环中打开它,在break块成功的情况下,可以try来打开它:

for article in all_articles:
    for __ in range(3):
        try:
            self.save_article_stats(article)
            break
        except urllib2.HTTPError as err:
            if err.code == 503:
                print("Got 503 error when looking for stats on " + url)
            else:
                raise

如果错误代码为 not 503,则错误将重新产生,并且控制流将退出for循环。