Python - Le bloc try-except

Bonjour, futurs maîtres Python ! Je suis ravi de vous guider à travers le monde merveilleux de la gestion des erreurs en Python. En tant que votre enseignant amical de informatique, j'ai vu countless étudiants se prendre des erreurs, mais n'ayez pas peur ! À la fin de ce tutoriel, vous manipulerez les exceptions comme un pro. Plongeons-y !

Python - try-except Block

Bloc Try-Except en Python

Imaginez que vous cuisinez une nouvelle recette. Vous n'êtes pas sûr(e) d'avoir tous les ingrédients, mais vous voulez quand même essayer. C'est exactement ce que fait le bloc try-except en Python - il vous permet de tester du code et de gérer les erreurs potentielles avec grâce.

Voici la structure de base :

try:
# Code qui pourrait provoquer une exception
except:
# Code pour gérer l'exception

Regardons un exemple simple :

try:
nombre = int(input("Entrez un nombre : "))
resultat = 10 / nombre
print(f"10 divisé par {nombre} est {resultat}")
except:
print("Oups ! Quelque chose s'est mal passé.")

Dans ce code :

  1. Nous demandons à l'utilisateur d'entrer un nombre.
  2. Nous essayons de diviser 10 par ce nombre.
  3. Si quelque chose va mal (comme entrer zéro ou un non-nombre), nous attrapons l'erreur et affichons un message amical.

Essayez de faire tourner ce code avec différentes entrées. Entrez 2, puis 0, puis "banane". voyez comment il gère chaque cas ?

Gestion de plusieurs exceptions

Maintenant, soyons plus spécifique. Différents types d'erreurs peuvent survenir, et nous pourrions vouloir les gérer différemment. C'est comme avoir différents kits de premiers soins pour différents types de blessures.

try:
nombre = int(input("Entrez un nombre : "))
resultat = 10 / nombre
print(f"10 divisé par {nombre} est {resultat}")
except ValueError:
print("Ce n'est pas un nombre valide !")
except ZeroDivisionError:
print("Vous ne pouvez pas diviser par zéro !")
except:
print("Quelque chose d'autre s'est mal passé.")

Ici, nous gérons trois scénarios :

  1. Si l'utilisateur entre quelque chose qui n'est pas un nombre (ValueError)
  2. Si l'utilisateur entre zéro (ZeroDivisionError)
  3. Toutes les autres erreurs inattendues

Faites tourner ce code avec des entrées comme "cinq", 0, 2, et voyez comment il réagit différemment !

Utilisation de la clause Else avec le bloc Try-Except

Parfois, nous voulons exécuter du code uniquement si aucune exception n'est survenue. C'est là que la clause else devient pratique. Envisagez-la comme un récompense lorsque tout se passe bien !

try:
nombre = int(input("Entrez un nombre positif : "))
if nombre <= 0:
raise ValueError("Ce n'est pas un nombre positif !")
resultat = 10 / nombre
except ValueError as ve:
print(f"Erreur : {ve}")
except ZeroDivisionError:
print("Vous ne pouvez pas diviser par zéro !")
else:
print(f"10 divisé par {nombre} est {resultat}")
print("Merci d'avoir entré un nombre valide !")

Dans cet exemple :

  1. Nous vérifions si le nombre est positif.
  2. Si ce n'est pas le cas, nous levons notre propre ValueError.
  3. Si aucune exception n'occupe, le bloc else s'exécute, en donnant un joli message.

La clause Finally

Enfin, mais non moins important, découvrez la clause finally. Ce bloc de code s'exécutera quoi qu'il arrive - que une exception se soit produite ou non. C'est comme nettoyer après la cuisine, indépendamment du fait que la recette ait été un succès ou un désastre.

try:
fichier = open("important_data.txt", "r")
contenu = fichier.read()
resultat = 10 / int(contenu)
except FileNotFoundError:
print("Le fichier n'existe pas !")
except ValueError:
print("Le fichier ne contient pas un nombre valide !")
except ZeroDivisionError:
print("Le nombre dans le fichier est zéro !")
else:
print(f"Le résultat est : {resultat}")
finally:
print("Fermeture du fichier...")
fichier.close()

Dans cet exemple :

  1. Nous essayons d'ouvrir un fichier et de lire un nombre dedans.
  2. Nous gérons diverses erreurs potentielles.
  3. Si réussi, nous affichons le résultat.
  4. Quoi qu'il arrive, nous nous assurons de fermer le fichier dans le bloc finally.

Résumé des méthodes de gestion des exceptions

Voici un tableau pratique résumant les méthodes de gestion des exceptions que nous avons apprises :

Méthode Description Cas d'utilisation
try Encadre le code qui pourrait lever une exception Toujours utilisé avec except, else ou finally
except Gère des exceptions spécifiques Attraper et gérer les erreurs
else S'exécute si aucune exception ne se produit dans le bloc try Exécuter du code qui ne devrait être exécuté que si try réussit
finally S'exécute toujours, indépendamment des exceptions Opérations de nettoyage (par exemple, fermer des fichiers)
raise Leve manuellement une exception Créer des conditions d'erreur personnalisées

N'oubliez pas, une bonne gestion des erreurs est comme porter un ceinture de sécurité - elle peut sembler inutile jusqu'à ce que vous en ayiez vraiment besoin ! Pratiquez ces concepts, et bientôt vous écrirez des codes Python robustes et résistants aux erreurs comme un pro.

Bon codage, et que vos exceptions soient toujours gérées avec grâce !

Credits: Image by storyset