Python ValueError异常处理示例
1. Python的ValueError是什么?
当函数接收到一个正确类型但不合适的值时,会引发 Python 的 ValueError。此时,情况不应该被更精确的异常描述,比如 IndexError。
2. ValueError 示例
在进行数学运算时,例如对负数求平方根,您将会遇到ValueError异常。
>>> import math
>>>
>>> math.sqrt(-10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>>
3. 处理数值错误异常
以下是一个使用try-except块来处理ValueError异常的简单示例。
import math
x = int(input('Please enter a positive number:\n'))
try:
print(f'Square Root of {x} is {math.sqrt(x)}')
except ValueError as ve:
print(f'You entered {x}, which is not a positive number.')
这是程序在不同类型的输入下的输出结果。
Please enter a positive number:
16
Square Root of 16 is 4.0
Please enter a positive number:
-10
You entered -10, which is not a positive number.
Please enter a positive number:
abc
Traceback (most recent call last):
File "/Users/scdev/Documents/PycharmProjects/hello-world/scdev/errors/valueerror_examples.py", line 11, in <module>
x = int(input('Please enter a positive number:\n'))
ValueError: invalid literal for int() with base 10: 'abc'
我们的程序可以在int()和math.sqrt()函数中引发ValueError。因此,我们可以创建一个嵌套的try-except块来处理它们。下面是更新后的代码片段,可以处理所有的ValueError情况。
import math
try:
x = int(input('Please enter a positive number:\n'))
try:
print(f'Square Root of {x} is {math.sqrt(x)}')
except ValueError as ve:
print(f'You entered {x}, which is not a positive number.')
except ValueError as ve:
print('You are supposed to enter positive number.')
4. 在一个函数中引发值错误。
这里有一个简单的例子,我们为正确类型但不合适的值的输入参数引发了 ValueError。
import math
def num_stats(x):
if x is not int:
raise TypeError('Work with Numbers Only')
if x < 0:
raise ValueError('Work with Positive Numbers Only')
print(f'{x} square is {x * x}')
print(f'{x} square root is {math.sqrt(x)}')
5. 参考文献
- Python Exception Handling
- ValueError Python Docs