Archives Wild Code School
Python

3.7 Python - Exception handling

Quête 21 sur 66 · 3 images archivées

Introduction

Nous allons apprendre à gérer les cas d'erreurs avec Python. Car des erreurs, nous en avons souvent, et il est temps de s'en occuper.

Objectifs

✅ Correctement lire les erreurs produites par Python ✅ Gérer ces erreurs dans notre code

Sommaire

Connaissances théoriques

Lire les codes erreurs

Quand on commence à coder, on a souvent peur de créer des erreurs, des bugs. Pourtant, ca fait partie du métier. Personne n'écrit un script sans faire aucune erreur. Avec le temps et l'expérience, on en fait moins, mais on en fait quand même. L'important n'est pas de faire un code parfait du premier coup. L'important est plutôt de savoir lire les codes erreurs pour les corriger... ou les anticiper !

Demandons à python un premier calcul : 12 divisé par 0. J'obtiens une erreur :

Tout d'abord, dédramatisons. J'ai fait une erreur, mais ce n'est pas grave. Mon ordinateur ne brûle pas et je n'ai rien cassé. C'est juste une erreur. Ensuite, lisons cette erreur. Python nous donne des indications sur cette erreur :

  • la position de l'erreur dans mon code, ici en ligne 3. Evidemment notre script est tout petit. Mais dans les grands codes, c'est une information importante.
  • le code erreur ZeroDivisionError, accompagné d'une explication sur l'erreur. Ici, le message est très clair : j'ai fait une division par zéro.
  • Enfin, Google Colab est gentil : il met directement une recherche de cette erreur sur Stack Overflow pour voir si d'autres personnes ont eu le même problème, et comment ils l'ont résolu.
Info

Stack Overflow est le forum internet qui fait référence pour les langages de développement. Attention, c'est un forum participatif. Certaines solutions ne sont donc pas bonnes... Le principe est que quelqu'un pose une question sur une erreur, et les autres répondent. Ca parait évident, mais autant le préciser : le code du premier message ne fonctionne jamais ! En effet, puisque la personne a une erreur. Il faut donc regarder si on a la même erreur que cette personne, et regarder les solutions dans les messages en dessous.

Exceptions handling

Il s'agit maintenant de gérer ces erreurs via des exceptions.

Pour cela, tu pourrais le faire à la main, en vérifiant que x est différent de zéro :

python
x = 0
print("hello")
if x != 0:
  print(12 / x)
else:
  pass

Mais il est plus propre d'attraper l'exception au vol. Ici, nous indiquons à Python "Essaye d'exécuter ce code, et s'il y a une erreur, va dans l'exception" :

python
x = 0
print("hello")

try:
  print(12 / x)
except :
  print("warning, you are trying to divide by 0")

Seulement, Python va attraper toutes les erreurs. Ca peut masquer d'autres types d'erreurs. Nous pouvons donc les gérer par code erreur :

python
x = 0

try:
  print(12/x)
except ZeroDivisionError:
  print("warning, you're trying to divide by 0")
terminal
>>> warning, you're trying to divide by 0

Mon erreur a bien été prise en compte ! Et si j'ai un autre cas d'erreur ? Alors j'aurai quand même une erreur.

↗
Try except examples
w3schools.com

Quiz

quiz
false|||true|||false
# Sur l'image ci-dessus provenant de Stack Overflow, où se trouve la solution ?
[] En bleu
[] En vert
[x] En rouge

Challenge

Ouvre 4.4 Python - Exception handling, fais une copie, et essaye de corriger toutes les erreurs grâce à la gestion d'exceptions.

Critères de validation

  • Le fichier en lien est consultable pour toute personne disposant du lien
  • Toutes les missions ont été réalisées

Une solution ici

Ressources partagées sur cette quête