Python >> Tutoriel Python >  >> Python

Python intercepte plusieurs exceptions

Nous pouvons utiliser un bloc try-except pour intercepter les exceptions et les traiter. Parfois, nous appelons une fonction qui peut lever plusieurs types d'exceptions en fonction des arguments, de la logique de traitement, etc. Dans ce didacticiel, nous apprendrons à intercepter plusieurs exceptions en python.

Python intercepte plusieurs exceptions

Disons que nous avons une fonction définie comme suit :


import math


def square(x):
    if int(x) is 0:
        raise ValueError('Input argument cannot be zero')
    if int(x) < 0:
        raise TypeError('Input argument must be positive integer')
    return math.pow(int(x), 2)

Nous pouvons attraper les deux ValueError et TypeError dans différent sauf bloc.


while True:

    try:
        y = square(input('Please enter a number\n'))
        print(y)
    except ValueError as ve:
        print(type(ve), '::', ve)
    except TypeError as te:
        print(type(te), '::', te)

J'ai mis le bloc try-except dans la boucle while True afin de pouvoir exécuter le scénario d'interception de plusieurs exceptions.

Sortie :


Please enter a number
10
100.0
Please enter a number
-5
<class 'TypeError'> :: Input argument must be positive integer
Please enter a number
0
<class 'ValueError'> :: Input argument cannot be zero
Please enter a number
^D
Traceback (most recent call last):
  File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_catch_multiple_exceptions.py", line 15, in 
    y = square(input('Please enter a number\n'))
EOFError: EOF when reading a line

Process finished with exit code 1

Intercepter plusieurs exceptions dans un seul bloc d'exception

Si vous remarquez le code de bloc sauf, c'est la même chose pour les deux types d'exception. Si tel est le cas, nous pouvons supprimer la redondance du code en passant le tuple des types d'exception dans le bloc except.

Voici la réécriture du code ci-dessus où nous attrapons plusieurs exceptions dans un seul bloc sauf.


while True:

    try:
        y = square(input('Please enter a number\n'))
        print(y)
    except (ValueError, TypeError) as e:
        print(type(e), '::', e)

La sortie sera exactement la même que précédemment. Nous pouvons utiliser cette approche lorsque le code dans le bloc except est le même pour plusieurs exceptions interceptées.

Vous pouvez consulter le script python complet et d'autres exemples Python à partir de notre référentiel GitHub.
Prochain article