gpt4 book ai didi

python - 当 Python 3 中已经存在异常时引发异常

转载 作者:IT老高 更新时间:2023-10-28 21:47:45 26 4
gpt4 key购买 nike

当以下代码中引发第二个异常 (B) 时,我的第一个异常 (A) 会发生什么情况?

class A(Exception): pass
class B(Exception): pass

try:
try:
raise A('first')
finally:
raise B('second')
except X as c:
print(c)

如果使用 X = A 运行,我会得到:

Traceback (most recent call last):  File "raising_more_exceptions.py", line 6, in     raise A('first')__main__.A: firstDuring handling of the above exception, another exception occurred:Traceback (most recent call last):  File "raising_more_exceptions.py", line 8, in     raise B('second')__main__.B: second

但如果 X = B 我得到:

second

问题

  1. 我的第一个异常去哪儿了?
  2. 为什么只能捕获最外层的异常?
  3. 如何剥离最外层的异常并重新引发较早的异常?

更新0

这个问题专门针对 Python 3,因为它的异常处理与 Python 2 完全不同。

最佳答案

回答问题3,你可以使用:

raise B('second') from None

这将删除异常A回溯。

Traceback (most recent call last):
File "raising_more_exceptions.py", line 8, in
raise B('second')
__main__.B: second

关于python - 当 Python 3 中已经存在异常时引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278426/

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