CodeGym /Cours Java /Python SELF FR /Erreurs pendant l'exécution du programme

Erreurs pendant l'exécution du programme

Python SELF FR
Niveau 17 , Leçon 0
Disponible

1.1 Apparition d'une erreur

Les erreurs (et exceptions) sont une partie intégrante de la programmation. Elles surviennent lorsque le programme rencontre des situations imprévues qu'il ne peut pas gérer. En Python, il existe un système de gestion des exceptions qui permet de capturer et de gérer les erreurs, empêchant le programme de se terminer.

Les exceptions surviennent le plus souvent dans les situations suivantes :

Erreurs de syntaxe :

Ces erreurs sont détectées lors de la compilation du code et sont liées à une mauvaise grammaire du langage Python. Par exemple, des deux-points manquants ou des mots-clés incorrects.


if True:
    print("Hello")
        

Erreurs d'exécution (Runtime Errors) :

Ces erreurs surviennent pendant l'exécution du programme et peuvent être causées par différentes raisons, telles que la division par zéro, l'accès à un index de liste inexistant, une mauvaise utilisation des types de données, etc.


print(1 / 0)  # ZeroDivisionError
        

Erreurs logiques :

Ces erreurs se produisent lorsque le programme fonctionne sans plantage, mais donne un résultat incorrect en raison d'une erreur dans la logique du programme. Les erreurs logiques ne provoquent pas d'exceptions et sont plus difficiles à déboguer.

Les erreurs logiques sont généralement appelées bugs - c'est comme un certain dysfonctionnement fonctionnel du programme. Les erreurs d'exécution sont appelées exceptions. Pour chaque erreur de ce type, Python crée un objet spécial (exception) et le "lance" dans le programme...

1.2 Le chemin des exceptions

Lorsque Python rencontre une exception, elle se propage à travers la pile des appels jusqu'à ce qu'elle soit gérée. La pile des appels est une séquence d'appels de fonctions qui ont conduit à l'apparition de l'exception.

Mécanisme de propagation des exceptions

  • Apparition d'une exception : Lorsqu'une erreur se produit, Python crée un objet d'exception.
  • Recherche du gestionnaire d'exceptions : L'interpréteur Python commence à rechercher un gestionnaire d'exceptions dans le bloc de code actuel. Si un gestionnaire n'est pas trouvé, il passe au bloc de code suivant qui a appelé la fonction actuelle.
  • Propagation de l'exception dans la pile : Ce processus se répète jusqu'à ce qu'un gestionnaire soit trouvé ou jusqu'à ce que la pile des appels soit épuisée.
  • Fin du programme : Si un gestionnaire n'est pas trouvé, le programme se termine et affiche un message d'erreur.

Exemple :


def func_a():
    func_b()
        
def func_b():
    func_c()
        
def func_c():
    print(1 / 0)  # Ici survient l'exception ZeroDivisionError
        
func_a()
        

Dans cet exemple, l'exception ZeroDivisionError survient dans la fonction func_c, puis se propage à travers la pile des appels via func_b et func_a. Si aucun gestionnaire n'est trouvé, le programme se termine avec une erreur.

1.3 Lecture du journal

Lorsque le programme se termine en raison d'une exception non gérée, Python affiche une trace de la pile (traceback), qui aide les développeurs à comprendre ce qui s'est passé. La trace de la pile contient des informations sur la séquence d'appels de fonctions qui ont conduit à l'apparition de l'exception et peut être analysée pour déboguer le programme.

Exemple de trace de pile


Traceback (most recent call last):
    File "example.py", line 10, in 
        func_a()
File "example.py", line 2, in func_a
    func_b()
File "example.py", line 5, in func_b
    func_c()
File "example.py", line 8, in func_c
    print(1 / 0)
ZeroDivisionError: division by zero

Analyse de la trace de pile

  • Type d'exception et message : À la fin de la trace, le type d'exception et le message sont indiqués. Dans l'exemple donné, c'est ZeroDivisionError: division by zero.
  • Séquence d'appels : La trace de la pile montre la séquence d'appels de fonctions. Dans notre exemple, l'erreur s'est produite dans la ligne print(1 / 0) dans la fonction func_c, appelée depuis func_b, qui elle-même a été appelée depuis func_a.
  • Fichiers et lignes de code : Chaque ligne de la trace indique le fichier et le numéro de ligne où l'appel s'est produit. Cela aide à trouver et corriger rapidement l'erreur dans le code.

Utilisation pratique de la trace de pile

La trace de pile est un outil important pour le débogage et l'analyse des programmes. Elle aide les développeurs à comprendre la cause de l'erreur et à trouver l'endroit dans le code où elle s'est produite. Voici quelques conseils pour utiliser la trace de pile :

  1. Lecture de bas en haut : Commencez l'analyse par l'appel le plus bas dans la trace, car c'est l'endroit où l'exception s'est produite.
  2. Vérification de tous les appels : Étudiez tous les appels dans la trace pour comprendre le chemin suivi par l'exception.
  3. Correction du code : Utilisez les informations de la trace pour corriger le code et prévenir des erreurs similaires à l'avenir.

Vous en apprendrez davantage sur les exceptions dans les conférences suivantes.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION