Exemples de gestion d'exception ValueError en Python
1. Qu'est-ce qu'une ValueError en Python ?
Une erreur ValueError en Python est levée lorsqu'une fonction reçoit un argument du bon type mais d'une valeur inappropriée. De plus, la situation ne doit pas être décrite par une exception plus précise telle que IndexError.
2. Exemple de ValueError
Vous obtiendrez une erreur de valeur lors d'opérations mathématiques, comme la racine carrée d'un nombre négatif.
>>> import math
>>>
>>> math.sqrt(-10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>>
3. Gestion de l'exception ValueError
Voici un exemple simple pour gérer l'exception ValueError en utilisant un bloc try-except.
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.')
Voici la sortie du programme avec différents types d'entrée.
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/pankaj/Documents/PycharmProjects/hello-world/journaldev/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'
Notre programme peut générer une ValueError dans les fonctions int() et math.sqrt(). Nous pouvons donc créer un bloc try-except imbriqué pour gérer les deux. Voici le code mis à jour pour prendre en charge tous les scénarios de 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. Lever une ValueError dans une fonction
Voici un exemple simple où nous levons une ValueError pour un argument d'entrée du bon type mais avec une valeur inappropriée.
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. Références
- Gestion des exceptions en Python
- Erreur de valeur Documentation Python
