gpt4 book ai didi

python - 为什么捕获 StopIteration 时无法跳出循环?

转载 作者:行者123 更新时间:2023-12-01 05:52:07 25 4
gpt4 key购买 nike

我需要捕获 next(it) 抛出的异常,因此在这种情况下我无法使用常规的 for 循环。所以我写了这段代码:

it = iter(xrange(5))
while True:
try:
num = it.next()
print(num)
except Exception as e:
print(e) # log and ignore
except StopIteration:
break
print('finished')

这不起作用,在数字用完后,我会陷入无限循环。我做错了什么?

最佳答案

事实证明,StopIteration 实际上是 Exception 的子类,而不仅仅是另一个可抛出类。因此,StopIteration 处理程序从未被调用,因为 StopIteration 已经由 Exception 处理程序处理。我只需要将 StopIteration 处理程序放在顶部:

it = iter(xrange(5))
while True:
try:
num = it.next()
print(num)
except StopIteration:
break
except Exception as e:
print(e) # log and ignore
print('finished')

关于python - 为什么捕获 StopIteration 时无法跳出循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com