为了账号安全,请及时绑定邮箱和手机立即绑定

异常后如何重试?

异常后如何重试?

慕运维8079593 2019-11-21 14:11:40
我有一个以开头的循环for i in range(0, 100)。正常情况下,它可以正常运行,但有时由于网络条件而失败。目前,我已对其进行了设置,以便在失败时,它将continue在except子句中(继续到的下一个数字i)。我是否可以将相同的数字重新分配给i循环并再次执行失败的循环?
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

做一个while True内部的for循环,把你的try代码中,并突破从while只有当你的代码的成功循环。


for i in range(0,100):

    while True:

        try:

            # do stuff

        except SomeSpecificException:

            continue

        break


查看完整回答
反对 回复 2019-11-21
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

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


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.


查看完整回答
反对 回复 2019-11-21
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

这是一种与其他解决方案类似的解决方案,但是如果未按规定的次数或重试次数失败,则会引发异常。


tries = 3

for i in range(tries):

    try:

        do_the_thing()

    except KeyError as e:

        if i < tries - 1: # i is zero indexed

            continue

        else:

            raise

    break


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 496 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信