python - 异常评估顺序

标签 python python-3.x

在 python 异常中,TypeError 检查是否发生在 ValueError 检查之前?例如:

>>> chr(123)
'{'

>>> chr('x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required (got type str)

>>> chr(18293939)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: chr() arg not in range(0x110000)

>>> chr(1829393993939393)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: signed integer is greater than maximum

或者说检查各种错误的顺序是什么?是否有关于不同异常类型的操作/评估顺序的文档?

最佳答案

这些都没有记录(,保证)。也就是说,如果没有要比较的正确类型的 value,就不可能引发合理的 ValueErrorValueErrorOverflowError 之间的区别肯定完全是一个实现细节,因为任何溢出目标类型的东西当然都会超出该类型的任何限制范围。

关于python - 异常评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58369093/

相关文章:

python - Firestore : REST API runQuery method expects wrong parent path pattern

python - python QMediaPlayer发布资源

python - 如何修改x轴下方凌乱且重叠的日期标签

python - 元组和三元和位置参数

python - 使用 pip3 的 python3 包的用户文件夹

python - 在 Ubuntu 14.04 LTS 中将 Python 重置为系统 Python

python - 为什么 sorted() 的关键参数需要关键字参数

python - 类型错误: 'range' 对象在没有明显原因的情况下不可调用

python - PyMySQL 访问被拒绝 "using password (no") 但使用密码

python - For 循环的迭代次数比我在 Python 中预期的要少