La gestion des exceptions est votre capacité à personnaliser et à afficher les messages d'erreur pour les parties de votre programme qui ne fonctionnent pas.

Que vous construisiez un site Web, créiez une API, un module ou tout autre produit utilisant Python, votre capacité à gérer efficacement les exceptions vous permet d'indiquer explicitement la cause d'une erreur.

Ici, nous allons voir comment vous pouvez gérer les exceptions en Python.

Comment fonctionne la gestion des exceptions en Python

Lorsque vous déclenchez des exceptions, vous dites à Python d'afficher un message chaque fois qu'un bloc de code échoue. La gestion des exceptions, c'est comme dire à quelqu'un d'essayer de soulever un poids. Et s'ils ne peuvent pas, ils devraient vous le faire savoir.

Pour lever une exception dans Python, cependant, vous direz à Python d'essayer d'exécuter un bloc de code particulier. Si ce bloc échoue, vous pouvez alors demander à Python de lever une exception définie pour le code ayant échoué.

instagram viewer

Quand devriez-vous utiliser des exceptions dans la programmation Python ?

Dans la plupart des cas, vous pouvez masquer les erreurs Python standard à l'aide d'exceptions. Mais vous devez rester vigilant, car cela peut entraîner des problèmes de débogage. Par conséquent, vous pourriez avoir du mal à déterminer la cause première d'un éventuel bogue.

Par conséquent, vous devez utiliser des exceptions lorsque vous avez suffisamment testé votre code et que vous êtes sûr qu'il fonctionne. En fin de compte, il est préférable de les utiliser pour gérer les erreurs potentielles pouvant survenir de la part de l'utilisateur plutôt que du code lui-même.

En d'autres termes, vous pouvez utiliser les exceptions comme outil d'avertissement pour guider les utilisateurs sur la façon d'utiliser votre programme.

Gestion des exceptions Python

Pour gérer les exceptions en Python, vous devez d'abord envelopper votre code dans un essayez... sauf bloquer. À l'occasion, vous devrez peut-être inclure un finalement déclaration pour gérer d'autres actions, en fonction de vos besoins.

Le concept de codage des exceptions Python ressemble généralement à ceci:

essayer:
"code à exécuter"
sauf:
"Message d'erreur"

Comme mentionné précédemment, vous pouvez également utiliser finalement dans un bloc d'exception. Mais le code que vous écrivez à l'intérieur d'un finalement La clause est indépendante et s'exécute qu'il y ait une exception ou non.

En substance, cela est pratique si vous avez un autre bloc de code que vous souhaitez exécuter en continu, indépendamment de ce qui se passe dans le essayez... sauf bloquer.

Voici un exemple:

essayer:
imprimer (9+6)
sauf:
print("message d'erreur")
finalement:
print("veuillez redémarrer")
Production:
15
merci de redémarrer

Dans le code ci-dessus, merci de redémarrer s'exécute en continu, qu'il y ait ou non une exception.

Un autre l'état peut également suivre une sauf déclaration:

essayer:
C = 2 + B
sauf:
print("B doit être défini")
autre:
print (u"Ajouté avec succès! Le résultat est %s"%(C))
Production: B doit être défini

Maintenant, essayez à nouveau avec "B" défini:

essayer:
B = 5
C = 2 + B
sauf:
print("B doit être défini")
autre:
print (u"Ajouté avec succès! Le résultat est %s"%(C))
Production: Ajouté avec succès! Le résultat est 7

Les exemples ci-dessus sont des exceptions non standardisées. Mais vous pouvez avoir une exception plus explicite lorsque vous combinez des exceptions intégrées (définies) avec des exceptions non standardisées:

essayer:
C = 2 + B
sauf NameError comme err :
print (err, ":", "B doit être défini, s'il vous plaît")
autre:
print (u"Ajouté avec succès! Le résultat est %s"%(C))
Production: le nom « B » n'est pas défini: B doit être défini, veuillez

L'exception ci-dessus vérifie d'abord s'il y a un NameError dans le essayer bloquer. Il imprime ensuite la norme NameError exception d'abord (" le nom 'B' n'est pas défini"). Et le prend en charge avec votre exception écrite ("B doit être défini, s'il vous plaît").

En rapport: Principes de programmation de base que tout programmeur doit connaître

Et si vous souhaitez gérer une chaîne d'exceptions, vous pouvez aussi accompagner un essayer bloquer avec plusieurs sauf déclarations. C'est assez pratique si votre essayer block a le potentiel d'avoir de nombreuses exceptions:

essayer:
B = 5
C = 2 + B
D = flotteur (6)
F = 7/0
sauf NameError comme err :
print (err,":", "B doit être défini, s'il vous plaît")
sauf ValueError en tant que val :
print (val,":", "Vous ne pouvez pas convertir ces données")
sauf ZeroDivisionError en tant que zeroerr :
print (zeroerr,":", "Vous ne pouvez pas diviser un nombre par zéro")
autre:
print (u"Opération réussie! Les résultats sont: %s, %s et %s"%(C, D, F))
Production: division par zéro: vous ne pouvez pas diviser un nombre par zéro

Et si la division était valide? Par exemple, le remplacement F = 7/0 dans le code ci-dessus avec F = 7/5 donne:

Production: Opération réussie! Les résultats sont: 7, 6,0 et 1,4

Exceptions définies par l'utilisateur en Python

Vous pouvez également proposer votre exception et les appeler plus tard dans votre programme. Cela vous permet de donner une description spécifique de votre exception et de la nommer comme vous le souhaitez.

Néanmoins, chaque exception définie par l'utilisateur (directement ou indirectement) provient toujours du Exception classe de Python.

L'exemple de code ci-dessous fait référence à la base Exception directement en appelant Erreur d'exécution à partir de cela:

classe connectionError (RuntimeError):
def __init__(self, valeur):
self.value = valeur
essayer:
raise connectionError("Mauvais nom d'hôte")
sauf connectionError as err:
imprimer (err.value)
Production: Nom d'hôte incorrect

Noter que erreur de connexion, dans ce cas, est une classe définie par l'utilisateur, que vous pouvez augmenter chaque fois que vous en avez besoin dans votre programme.

En rapport: Le guide du débutant sur les expressions régulières avec Python

Vous pouvez créer une exception définie par l'utilisateur en la dérivant directement du Exception classe de base. L'exception ci-dessous, cependant, empêche la soustraction de 5 à 6 et appelle directement l'exception de la classe de base:

erreurs de classe (Exception):
passe
classe sixFiveError (erreurs):
def __init__(self, valeur, message):
self.value = valeur
self.message = message
essayer:
augmenter sixFiveError (6-5,"Cette soustraction n'est pas autorisée")
sauf sixFiveError comme e :
print("Il y a eu une erreur :", e.message)
Production: Une erreur s'est produite: cette soustraction n'est pas autorisée

En pratique, vous pouvez utiliser une exception que vous avez définie précédemment en l'appelant dans une autre fonction. Par exemple, vous pouvez créer un floatError qui ne permet que l'ajout de deux flotteurs:

# Appelez d'abord les classes d'exception de base :
erreurs de classe (Exception):
passe
# Ensuite, dérivez votre propre exception de la classe de base :
classe FloatError (erreurs):
def __init__(self, valeur, message):
self.value = valeur
self.message = message
# Créez une fonction pour ajouter deux flottants :
def addTwoFloat (a, b):
if (type (a) et type (b)) != float :
augmenter FloatError (a+b,"Les nombres doivent être flottants pour ajouter")
autre:
imprimer (a + b)
addTwoFloat (4, 7)
Production: __main__.FloatError: (11, 'Les nombres doivent être flottants pour être ajoutés')

Parce que vous avez maintenant défini un FloatError classe, Python le soulève si vous essayez d'ajouter deux littéraux non flottants en utilisant le ajouterdeuxFlottant une fonction.

Vous pouvez imprimer le FloatError class dans le même fichier Python où vous l'avez créé pour voir ce qui se passe:

imprimer (FloatError)
Production:

FloatError, cependant, n'est pas une exception Python intégrée. Vous pouvez le vérifier en appelant FloatError dans un autre nouveau fichier Python où vous n'avez pas créé cette classe:

imprimer (FloatError)
Production: NameError: le nom 'FloatError' n'est pas défini

Vous obtenez un NameError car Python ne le reconnaît pas comme une exception standard.

Vous pouvez également essayer d'auto-définir d'autres classes d'erreurs pour voir comment elles se produisent.

Rendez vos programmes Python plus conviviaux avec des exceptions

Il existe de nombreuses exceptions standard en Python. Mais vous pouvez également définir le vôtre. Néanmoins, la facilité d'utilisation de votre programme dépend dans une certaine mesure de la façon dont il gère diverses exceptions (qu'elles soient définies par l'utilisateur, non spécifiques ou standard).

Les exceptions, cependant, vous permettent de dicter comment votre programme doit fonctionner lorsque les utilisateurs interagissent avec eux. L'indication claire et concise de la cause d'une erreur donne également aux utilisateurs une idée de ce qu'ils font mal, et parfois, cela les oriente dans la bonne direction.

E-mail
Comment déboguer votre code Python

Équipez-vous du savoir-faire pour éliminer chaque bogue Python sur votre chemin.

Lire la suite

Rubriques connexes
  • Programmation
  • Python
  • Tutoriels de codage
A propos de l'auteur
Idowu Omisola (82 articles publiés)

Idowu est passionné par tout ce qui concerne les technologies intelligentes et la productivité. Pendant son temps libre, il s'amuse avec le codage et passe à l'échiquier quand il s'ennuie, mais il aime aussi de temps en temps rompre avec la routine. Sa passion pour montrer aux gens la voie à suivre avec la technologie moderne le motive à écrire davantage.

Plus de Idowu Omisola

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Un pas de plus…!

Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.

.