Recherche de site Web

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