我是python的新手,试图学习try和except语句,但我遇到了一件我无法理解的事情,也无法在谷歌上找到答案。问题是,当我运行这段代码时,它打印'Error':
try:
print(1/0)
except ZeroDivisionError:
print('Error')
然而,在下面的代码中,在异常中引发了一个不同的错误,不知何故遇到了两个错误,而不是故意引发的错误。代码:try:
print(1/0)
except ZeroDivisionError:
raise ValueError
错误读取:
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(1/0)
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 4, in <module>
raise ValueError
ValueError
我不明白为什么这两个错误都被提出,而不仅仅是ValueError
,因为我已经为ZeroDivisionError
做了一个异常
如有任何帮助,不胜感激
异常处理系统的一般限制是失败拒绝和是合并的:raise ZeroDivisionError
被视为类似于1/0
的表达式,尽管后者可能是编程中的错误,而前者更可能是关于调用者错误的故意的语句。这样看来,你的处理程序未能处理第一个异常;在这种情况下,Python会自动包含原始异常的回溯(和类型/消息),因为它比仅对"级联错误"进行回溯更有用。注释解释了如何在需要时抑制该帮助。