当试图在异常中引发其中1个错误时,会遇到2个错误



我是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会自动包含原始异常的回溯(和类型/消息),因为它比仅对"级联错误"进行回溯更有用。注释解释了如何在需要时抑制该帮助。

最新更新