异常后如何重试?

新手上路,请多包涵

我有一个以 for i in range(0, 100) 开头的循环。通常它可以正常运行,但有时会由于网络状况而失败。目前我已经设置了它,以便在失败时,它将 continue 在 except 子句中(继续到下一个数字 i )。

我是否可以将相同的数字重新分配给 i 并再次运行失败的循环迭代?

原文由 FurtiveFelon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答

在 for 循环中执行 while True ,将 try 代码放入其中,然后仅在代码成功时从 while 循环中中断。

 for i in range(0,100):
    while True:
        try:
            # do stuff
        except SomeSpecificException:
            continue
        break

原文由 zneak 发布,翻译遵循 CC BY-SA 3.0 许可协议

我更喜欢限制重试的次数,这样如果那个特定的项目有问题你最终会继续下一个,因此:

 for i in range(100):
  for attempt in range(10):
    try:
      # do thing
    except:
      # perhaps reconnect, etc.
    else:
      break
  else:
    # we failed all the attempts - deal with the consequences.

原文由 xorsyst 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题