【问题标题】:Simple way to re-run try block if a specific exception occurs?如果发生特定异常,重新运行 try 块的简单方法?
【发布时间】:2019-06-20 20:24:01
【问题描述】:

我正在使用 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 错误,我希望重新运行“尝试”中的部分,最多 3 次。有没有简单的方法在 Python 中做到这一点?

【问题讨论】:

  • 第三次尝试失败会怎样?继续下一篇文章,或重新提出HTTPError

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


【解决方案1】:

您可以在for 循环中打开它,如果try 块成功,则可以在break 中使用:

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

如果错误代码不是 503,则错误将重新引发,并且控制流将退出for循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多