Advertisement
  1. Code
  2. Python
Code

Gestion des erreurs et journalisation en Python

by
Difficulty:BeginnerLength:ShortLanguages:

French (Français) translation by Soule Nassurdine (you can also view the original English article)

Dans le développement de logiciels, différents types d'erreurs peuvent survenir. Elles pourraient être des erreurs de syntaxe, des erreurs logiques ou des erreurs d'exécution.

Les erreurs de syntaxe se produisent très probablement pendant la phase de développement initiale et sont le résultat d'une syntaxe incorrecte. Les erreurs de syntaxe peuvent être facilement attrapées lorsque le programme est compilé pour l'exécution.

Les erreurs logiques, d'autre part, sont le résultat d'une implémentation logique incorrecte. Un exemple serait un programme accédant à une liste non triée en supposant qu'elle soit triée. Les erreurs logiques sont les plus difficiles à repérer.

Les erreurs d'exécution sont les erreurs les plus intéressantes qui se produisent, si nous ne considérons pas tous les angles. Un exemple serait d'essayer d'accéder à un fichier inexistant.

Dans ce tutoriel, nous allons apprendre à gérer les erreurs en Python et comment enregistrer les erreurs pour une meilleure compréhension de ce qui a mal tourné dans l'application.

Manipulation des exceptions en Python

Commençons par un programme simple pour ajouter deux nombres en Python. Notre programme prend deux paramètres comme entrée et affiche la somme. Voici un programme Python pour ajouter deux nombres :

Essayez d'exécuter le programme Python ci-dessus, et vous devriez voir la somme s'afficher.

À l'écriture du programme ci-dessus, nous n'avons pas vraiment considéré le fait que n'importe quoi peut se passer. Et si l'un des paramètres passés n'est pas un nombre ?

Nous n'avons pas traité ce cas, par conséquent notre programme s'effondrerait avec le message d'erreur suivant :

Nous pouvons traiter le problème ci-dessus en vérifiant si les paramètres passés sont des nombres entiers. Mais cela ne résoudra pas le problème. Que se passe-t-il si le code casse dû à une autre raison et provoque le blocage du programme ? Travailler avec un programme qui plante en rencontrant une erreur n'est pas une beau à voir. Même si une erreur inconnue est rencontrée, le code devrait être assez robuste pour gérer le plantage gracieusement et permettre à l'utilisateur de savoir que quelque chose ne va pas.

Manipulation des exceptions en utilisant try et except

Dans Python, nous utilisons les instructions try et except pour gérer les exceptions. Chaque fois que le code plante, une exception est lancée sans que le programme ne crashe. Modifions le programme d'addition de nombre pour inclure les instructions try et except.

Python traiterait tous les codes dans l'instruction try et except. Lorsqu'il rencontre une erreur, le contrôle est transmis au bloc except, en ignorant le code entre les deux.

Comme on l'a vu dans le code ci-dessus, nous avons déplacé notre code dans une déclaration try et except. Essayez d'exécuter le programme et il devrait lancer un message d'erreur au lieu de bloquer le programme. La raison de l'exception est également renvoyée en tant que message d'exception.

La méthode ci-dessus gère les exceptions inattendues. Voyons comment gérer une exception attendue. Supposons que nous essayons de lire un fichier particulier à l'aide de notre programme Python, mais que le fichier n'existe pas. Dans ce cas, nous traiterons l'exception et laissons l'utilisateur savoir que le fichier n'existe pas lorsque ça survient. Jetez un œil au code de lecture du fichier :

Dans le code ci-dessus, nous avons traité la lecture du fichier dans un gestionnaire d'exception de type IOError. Si le code plante en raison de l'indisponibilité du fichier fname, l'erreur serait traitée dans le gestionnaire d'erreur IOError. Comme pour les exceptions IOError, il existe beaucoup plus d'exceptions standard, comme Arithmetic, OverflowError, et ImportError, pour n'en nommer que quelques-unes.

Exceptions multiples

Nous pouvons gérer plusieurs exceptions à la fois en réunissant les exceptions standard comme indiqué :

Le code ci-dessus lèverait les exceptions IOError et NameError lorsque le programme est exécuté.

La clause finally

Supposons que nous utilisons certaines ressources dans notre programme Python. Pendant l'exécution du programme, il a rencontré une erreur et n'a été exécuté qu'à mi-chemin. Dans ce cas, la ressource serait inutilement retenue. Nous pouvons nettoyer ces ressources en utilisant la clause finally. Jetez un œil au code ci-dessous :

Si, lors de l'exécution du code ci-dessus, une exception est soulevée lors de la lecture du fichier, le filePointer serait fermé dans le bloc finally.

Journalisation en Python

Lorsque quelque chose ne va pas dans une application, il devient plus facile de déboguer si nous connaissons la source de l'erreur. Lorsqu'une exception est levée, nous pouvons loguer les informations requises pour suivre le problème. Python fournit une bibliothèque de journalisation simple et puissante. Voyons comment utiliser la journalisation en Python.

Comme on l'a vu dans le code ci-dessus, nous devons d'abord importer la bibliothèque de journalisation de Python, puis initialiser le logueur avec le nom du fichier de journalisation et le niveau de journalisation. Il existe cinq niveaux de journalisation : DEBUG, INFO, WARNING, ERROR et CRITICAL. Ici, nous avons réglé le niveau de journalisation sur INFO, par conséquent les journaux INFO et ceux ci-dessus seraient enregistrés.

Obtenir la trace de la pile

Dans le code ci-dessus, nous avions un seul fichier de programme, de ce fait il était plus facile de savoir où l'erreur s'est produite. Mais que faisons-nous lorsque plusieurs fichiers de programme sont impliqués ? Dans un tel cas, obtenir la trace de la pile de l'erreur aide à trouver la source de l'erreur. La trace de la pile de l'exception peut être enregistrée comme indiqué :

Si vous essayez d'exécuter le programme ci-dessus, en levant une exception, l'erreur suivante serait enregistrée dans le fichier de journalisation :

Récapitulation

Dans ce tutoriel, nous avons vu comment commencer à gérer les erreurs en Python et utiliser le module de journalisation pour enregistrer les erreurs. Nous avons vu l'utilisation des déclarations try, except et finally, qui sont très utiles en cas de traitement des erreurs en Python. Pour des informations plus détaillées, je vous recommande de lire la documentation officielle sur la journalisation. Consultez également la documentation pour gérer les exceptions en Python.

Faites-nous savoir vos pensées dans les commentaires ci-dessous.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.