gpt4 book ai didi

python - 循环完成后引发 for 循环中遇到的第一个异常

转载 作者:行者123 更新时间:2023-11-28 22:58:36 34 4
gpt4 key购买 nike

我有一个循环,可能会在一次或多次迭代中引发异常。我希望循环完成,然后引发遇到的第一个异常,在以下示例中“引发 4”。

示例代码:

e = None
for x in range(10):
try:
print x
if x == 4:
raise Exception('raise on 4')
if x == 6:
raise Exception('raise on 6')
except Exception as e:
print e
continue
else:
if e:
raise

输出:

0
1
2
3
4
raise on 4
5
6
raise on 6
7
8
9
Traceback (most recent call last):
File "<stdin>", line 7, in <module>
Exception: raise on 6

我可以使用日志记录模块来记录它们,这很好,但如果可能的话,我想在第一个异常时引发。

我对 Python 还是很陌生,所以我不完全确定我用“else”语句构造循环的方式是否非常 Pythonic 或正确。

最佳答案

您必须将 e 存储在一个单独的变量中:

firste = None
for x in range(10):
try:
print x
if x == 4:
raise Exception('raise on 4')
if x == 6:
raise Exception('raise on 6')
except Exception as e:
if firste is None:
firste = e
continue

if firste is not None:
raise firste

现在 firste 仅在第一次引发异常时设置。

在这种情况下你不需要使用else。仅当您的 for 循环包含 break 语句时才使用它,这将跳过 else 套件,否则只需将 firste 的测试放在 for 循环而不使用冗余的 else 套件缩进。

关于python - 循环完成后引发 for 循环中遇到的第一个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13722218/

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