Python >> Tutoriel Python >  >> Python

Comment intercepter et imprimer des messages d'exception en Python

Python est livré avec un support étendu des exceptions et de la gestion des exceptions. Un événement d'exception interrompt et, s'il n'est pas intercepté, termine immédiatement un programme en cours d'exécution. Les exemples les plus populaires sont le IndexError , ValueError , et TypeError .

Une exception mettra immédiatement fin à votre programme. Pour éviter cela, vous pouvez attraper l'exception avec un try/except bloquer autour du code où vous vous attendez à ce qu'une certaine exception puisse se produire. Voici comment vous interceptez et imprimez une exception donnée :

Pour intercepter et imprimer une exception qui s'est produite dans un extrait de code, encapsulez-le dans un try en retrait bloc, suivi de la commande "except Exception as e" qui intercepte l'exception et enregistre son message d'erreur dans la variable chaîne e . Vous pouvez maintenant imprimer le message d'erreur avec "print(e)" ou l'utiliser pour un traitement ultérieur.

try:
    # ... YOUR CODE HERE ... #
except Exception as e:
    # ... PRINT THE ERROR MESSAGE ... #
    print(e)

Exemple 1 :Capturer et imprimer l'erreur d'index

Si vous essayez d'accéder à l'élément de liste avec l'index 100 mais que vos listes ne sont composées que de trois éléments, Python lancera un IndexError vous indiquant que l'index de la liste est hors limites.

try:
    lst = ['Alice', 'Bob', 'Carl']
    print(lst[3])
except Exception as e:
    print(e)

print('Am I executed?')

Votre code génial tente d'accéder au quatrième élément de votre liste avec l'index 3, qui n'existe pas !

Heureusement, vous avez enveloppé le code dans un try/catch bloquer et imprimer l'exception. Le programme n'est pas terminé. Ainsi, il exécute le dernier print() instruction après que l'exception a été interceptée et gérée. Ceci est la sortie de l'extrait de code précédent.

list index out of range
Am I executed?

Exemple 2 :Capturer et imprimer l'erreur de valeur

Le ValueError survient si vous essayez d'utiliser des valeurs erronées dans certaines fonctions. Voici un exemple où le ValueError est déclenché parce que vous avez essayé de calculer la racine carrée d'un nombre négatif :

import math

try:
    a = math.sqrt(-2)
except Exception as e:
    print(e)

print('Am I executed?')

La sortie montre que non seulement le message d'erreur mais aussi la chaîne 'Am I executed?' est imprimé.

math domain error
Am I executed?

Exemple 3 :Capturer et imprimer une erreur de type

Python lance le TypeError object is not subscriptable si vous utilisez l'indexation avec la notation entre crochets sur un objet qui n'est pas indexable. C'est le cas si l'objet ne définit pas le __getitem__() méthode. Voici comment détecter l'erreur et l'imprimer sur votre shell :

try:
    variable = None
    print(variable[0])
except Exception as e:
    print(e)

print('Am I executed?')

La sortie montre que non seulement le message d'erreur mais aussi la chaîne 'Am I executed?' est imprimé.

'NoneType' object is not subscriptable
Am I executed?

J'espère que vous êtes maintenant en mesure d'attraper et d'imprimer vos messages d'erreur.

Résumé

Pour intercepter et imprimer une exception qui s'est produite dans un extrait de code, encapsulez-le dans un try en retrait bloc, suivi de la commande "except Exception as e" qui intercepte l'exception et enregistre son message d'erreur dans la variable chaîne e . Vous pouvez maintenant imprimer le message d'erreur avec "print(e)" ou l'utiliser pour un traitement ultérieur.