首页 > 解决方案 > 尝试在异常中引发 1 个错误时遇到 2 个错误

问题描述

我是 python 新手,正在尝试学习 try 和 except 语句,但我遇到了我无法理解的事情,也无法在谷歌上找到答案。问题是当我运行此代码时,它会打印“错误”:

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

任何帮助将非常感激

标签: pythontry-catch

解决方案


将失败拒绝混为一谈是异常处理系统的一般限制:raise ZeroDivisionError被视为等同于类似的表达式1/0,即使后者可能是编程中的错误,而前者更可能是关于错误的故意陈述在来电者中。因此,外观是您的处理程序未能处理第一个异常;在这种情况下,Python 会自动包含原始异常的回溯(和类型/消息),因为它比仅针对“级联错误”更有用。评论解释了如何在需要时取消该帮助。


推荐阅读