python - 如果发生错误,则在循环中重复迭代

标签 python loops exception exception-handling iteration

有没有像breakcontinue这样的命令可以重复最近的迭代?

例如,抛出异常时。

for i in range(0,500):
    try:
        conn = getConnection(url+str(i))
        doSomething(conn)
    except:
        repeat

让我们进行一次迭代,其中 i 变量的值为 6。在此迭代期间,发生了一些连接错误。我想重复这个迭代。

有没有可以做到这一点的命令?

我当然可以这样做:

i=0
while i!=500:
    try:
        conn = getConnection(url+str(i))
        doSomething(conn)
        i+=1
    except:
        pass

最佳答案

不,Python 中没有“倒回”for 循环的命令。

您可以在 for 循环中使用 while True: 循环:

for i in range(500):
    while True:
        try:
            conn = getConnection(url+str(i))
            doSomething(conn)
        except Exception: # Replace Exception with something more specific.
            continue
        else:
            break

或者没有else::

for i in range(500):
    while True:
        try:
            conn = getConnection(url+str(i))
            doSomething(conn)
            break
        except Exception: # Replace Exception with something more specific.
            continue

但我个人认为您提出的解决方案更好,因为它避免了缩进级别。

关于python - 如果发生错误,则在循环中重复迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27237478/

相关文章:

python - 最好将项目添加到集合中,还是将最终列表转换为集合?

python - 跨多个地理围栏的地理围栏半径分布/比率

python - Bokeh 图需要 Bokeh 服务器和 Web 服务器

python - 用 ply 转义正则表达式中的空格?

javascript - 如何在 JavaScript 中将 .txt 文件中的数据保存到数组中?

c# - 重新抛出包装对象的异常

python - 'ValueError : not enough values to unpack (expected 2, 得到 0)'

python - 使用Python OpenCV在循环中进行图像平铺

c# - 当数据库未启动但 SQL Server 已准备好连接时出现 SqlException

c# - List.ConvertAll 和异常