gpt4 book ai didi

python - 最后尝试 yield - 我们是否引发了异常?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:25 24 4
gpt4 key购买 nike

长话短说

是否有可能在 finally 子句中找出​​是否存在未捕获的未捕获异常?

背景

我想遍历项目以对它们进行一些相对昂贵的处理,这很可能会中断并引发异常。所以我想保留我的位置。但是保存状态的成本也很高 - 所以我不想每次都这样做,只是在我屈服的代码中出现异常时

我在想象一些形状模糊的东西:

def get_things(my_iterator):
for items in my_iterator:
try:
yield item
finally:
if something_went_wrong(): # magic oracle function for failure
save_state(item)
continue_normal_processing()

但我不知道这是否可能。值得注意的是,except Exception: 不会引发任何异常,因为异常不在此函数中。

最佳答案

...看来我对 except 的行为完全错了。

def f():
for i in range(10):
try:
yield i
except Exception:
print "Nope, this broke"
raise


for x in f():
print x
if x == 2:
raise IndexError

返回

0
1
2
Nope, this broke
Traceback (most recent call last):
...
IndexError

关于python - 最后尝试 yield - 我们是否引发了异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347147/

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