Interception des exceptions en Python

PythonBeginner
Pratiquer maintenant

Introduction

Dans les profondeurs énigmatiques de la Forêt des Chuchotements, sous le manteau d'argent d'une nuit éclairée par la lune, il y avait un bruit parmi les novice sorciers qu'un Mentor de l'Âme de la Forêt Magique était apparu. Ce guide évanescent était dit posséder les connaissances du Python, le langage serpentiforme qui pouvait contrôler la trame même du code. Trouver le Mentor était de découvrir les arts anciens de la capture d'exceptions - un moyen d'enchanter son code pour gérer les sorts imprévisibles d'erreur sans faire défaillir la magie elle-même.

Une nuit, vous vous trouvez debout devant un vieil chêne, ses feuilles scintillant d'un éclat surnaturel. C'est ici, au cœur de la forêt, que vous allez apprendre les secrets du Mentor. Votre objectif est de maîtriser l'art arcane de la capture d'exceptions en Python, en vous assurant que vos incantations restent intacts, même lorsque l'inattendu se produit.

Identifier les malédictions potentielles

Dans cette étape, vous allez apprendre à identifier les emplacements potentiels où des malédictions (erreurs) peuvent survenir dans vos incantations Python (code). Commençons par élaborer une simple incantation qui peut parfois mal tourner. Nous allons créer un script de mélange de potions qui tentera de diviser les potions en flacons plus petits, mais comme tout sorcier sage le sait, il ne faut jamais diviser par zéro.

Ouvrez un fichier nommé potion_dividing.py dans ~/project et ajoutez le code suivant :

def divide_potions(total_potions, vial_count):
    return total_potions / vial_count

## Essayez de diviser 10 potions en 2 flacons
print(divide_potions(10, 2))

Exécutez votre code dans le terminal en utilisant la commande :

python ~/project/potion_dividing.py

Vous devriez voir la sortie :

5.0

Cela indique la division réussie des potions.

Maintenant, modifiez le script potion_dividing.py pour inclure un cas d'incantation risquée.

print(divide_potions(10, 0))  ## Cette incantation est dangereuse et devrait être gérée!

Vous devriez voir la sortie :

Traceback (most recent call last):
  File "/home/labex/project/potion_dividing.py", line 6, in <module>
    print(divide_potions(10, 0))
  File "/home/labex/project/potion_dividing.py", line 2, in divide_potions
    return total_potions / vial_count
ZeroDivisionError: division by zero

L'exécution du script amélioré vous montrera l'exception maudite que vous devez attraper. Dans ce laboratoire, nous allons apprendre à gérer de telles situations avec grâce.

Confectionner un sort protecteur

Ayant subi la malédiction de diviser par zéro, il est temps de confectionner un sort protecteur en utilisant les clauses try et except. Mettez à jour le script potion_dividing.py pour inclure une protection contre de tels résultats calamiteux.

def divide_potions(total_potions, vial_count):
    try:
        return total_potions / vial_count
    except ZeroDivisionError:
        return "Un sorcier ne divise jamais par zéro!"

## Essayez de diviser les potions en toute sécurité
print(divide_potions(10, 2))
print(divide_potions(10, 0))  ## Cela ne devrait plus provoquer de malédiction

Exécutez à nouveau le script amélioré dans votre terminal en utilisant :

python ~/project/potion_dividing.py

Votre code devrait maintenant gérer l'exception avec grâce, et au lieu d'une erreur, il imprimera un message d'avertissement :

5.0
Un sorcier ne divise jamais par zéro!

Résumé

Dans ce laboratoire, nous avons parcouru les royaumes tenebreux des exceptions Python dans un cadre de forêt magique. Nous avons exploré la manière d'identifier les erreurs potentielles et de conjurer des sorts protecteurs (blocs try/except) pour protéger notre code contre les calamités imprévues sans perturber le flux de l'incantation.

À la fin de notre parcours, nous n'avons pas seulement rencontré la ZeroDivisionError mais également maîtrisé la technique pour éviter son chaos, rendant notre code plus robuste et moins susceptible d'être perturbé par les forces du chaos.

Lorsque vous poursuivrez vos aventures dans la programmation, souvenez-vous des paroles du Mentor de l'Âme de la Forêt Magique : "Un sorcier sage s'attend toujours à l'inattendu et protège l'incantation avec une clause protectrice."