python - 尝试在异常中引发 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
任何帮助将非常感激
解决方案
将失败和拒绝混为一谈是异常处理系统的一般限制:raise ZeroDivisionError
被视为等同于类似的表达式1/0
,即使后者可能是编程中的错误,而前者更可能是关于错误的故意陈述在来电者中。因此,外观是您的处理程序未能处理第一个异常;在这种情况下,Python 会自动包含原始异常的回溯(和类型/消息),因为它比仅针对“级联错误”更有用。评论解释了如何在需要时取消该帮助。
推荐阅读
- react-native - 为什么我的 React Native 输入字段会不断重置为其初始值?
- c# - StackExchange.Redis 命令超时问题
- php - 碳格式只有闰年的年和日
- android - ConstraintLayout Slide Transition 动画在动画结束前显示视图的全高
- php - 如何使用 PHP 在 twilio 来电显示手机号码列表中添加手机号码?
- python - 如何从文件夹中动态导入脚本并在 Python 中动态执行函数?
- android - 将前置摄像头更改为后置摄像头时的摄像头 X CameraSelector 问题
- nuxt.js - Nuxt.js 说编译时有一些错误
- java - android studio 中的传感器类型
- windows - Apache-ignite 集群需要很长时间才能启动