You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何忽略所有错误强制重启循环迭代?

解决代码迭代中断:跳过错误或强制重启迭代

一、跳过错误,继续下一次迭代

用try-except包裹你的代码块,捕获异常后直接进入下一轮循环,不中断整个流程:

while True:
    try:
        # 替换成你的代码逻辑
        [CODE BLOCK]
    except Exception as e:
        # 可选:打印错误日志,方便后续排查问题
        print(f"执行出错: {str(e)}")
        # 跳过当前出错的迭代,直接走下一次循环
        continue

提示:如果知道具体的错误类型(比如网络请求超时、服务器返回错误),尽量把Exception换成对应具体异常类(比如requests.exceptions.RequestException),这样不会误捕获语法错误这类不该忽略的问题。

二、出错后强制重启当前代码块迭代

如果需要在出错后重新执行当前这轮的代码逻辑,而不是直接跳去下一轮,可以用两种方式实现:

方式1:嵌套循环+标记位控制

while True:
    need_restart = True
    while need_restart:
        try:
            [CODE BLOCK]
            # 代码执行成功,关闭重启标记,进入外层循环的下一轮
            need_restart = False
        except Exception as e:
            print(f"出错,准备重启当前迭代: {str(e)}")
            # 不修改标记位,内层循环会再次执行代码块

方式2:函数封装+循环重试

把代码块封装成函数,出错时重新调用函数执行:

def execute_code():
    try:
        [CODE BLOCK]
    except Exception as e:
        print(f"代码执行失败,重启中: {str(e)}")
        execute_code()

# 外层循环保持持续运行
while True:
    execute_code()

注意:这种递归方式如果频繁出错,可能触发Python的递归深度限制,更稳妥的还是用循环方式。

额外优化建议

  • 加上重试延迟:如果是服务器故障导致的错误,不要立刻重试,加个几秒延迟避免给服务器添负担:
import time

while True:
    try:
        [CODE BLOCK]
    except Exception as e:
        print(f"出错,3秒后重试: {str(e)}")
        time.sleep(3)
  • 错误计数:设置最大重试次数,避免无限循环在同一个错误上:
import time

max_retries = 5
while True:
    retry_count = 0
    while retry_count < max_retries:
        try:
            [CODE BLOCK]
            break
        except Exception as e:
            retry_count += 1
            print(f"第{retry_count}次出错: {str(e)}")
            time.sleep(2)
    # 达到最大重试次数后,可选择退出或继续外层循环
    print("已达最大重试次数,进入下一轮迭代")

内容的提问来源于stack exchange,提问作者Slartibartfast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:10:05