在 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,就不可能引发合理的 ValueError
。 ValueError
和 OverflowError
之间的区别肯定完全是一个实现细节,因为任何溢出目标类型的东西当然都会超出该类型的任何限制范围。
关于python - 异常评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58369093/