Python : Les exceptions

Vous lisez
Python : Les exceptions

Introduction

Les erreurs que peut rencontrer Python peuvent être interceptées et traitées.

cours-python-les-exceptions

A quoi cela sert-il ?

Quand Python rencontre une erreur dans votre code, il lève une exception.

1
var = 1/10 # Exemple avec une division par 0

# Error: ZeroDivisionError: integer division or modulo by zero #

Avec:

  • “ZeroDivisionError” : Le type de l’exception.
  • “integer division or modulo by zero” : le message pour nous aider à comprendre l’erreur.

Python lève une exception quand il trouve une erreur:

  • Soit dans le code (syntaxe,…)
  • Soit dans l’opération demandée par le code

Types d’exceptions

On trouve différents types d’exceptions:

  • ValueError : Erreurs de “valeurs”, ce référer au message associé.
  • SyntaxError : Erreurs de “syntaxe” dans le code, ce référer à ligne indiquée.
  • RuntimeError : Erreurs système ou matériel.

Pour l’ensemble de ces erreurs, Python nous donne le fichier et la ligne à laquelle c’est produite l’erreur ainsi qu’une indication sur le problème. Cela suffit généralement à le régler.

Forme minimale du bloc “try”

1
2
3
4
try: # On test un bout de code
    year = input() # On demande a l'utilisateur d'entrer une date, "input()" attend un nombre
except:
    print "Erreur lors de conversion de l'annee. Merci de saisir un nombre." # Si le code contenu dans le "try" genere une erreur, le code contenu ici est execute

Avec:

  • Le mot clé try suivi des habituels deux points “:” (signifie « essayer », en anglais)
  • Le bloc d’instructions à essayer
  • Le mot clé except suivi, lui aussi, des deux points “:”.
    Il se trouve au même niveau d’indentation que le try.
  • Le bloc d’instructions qui sera exécuter si une erreur est trouvée dans le premier bloc

Exemple

1
2
3
4
try: # On test un bout de code
    # Code a tester
except:
    # Code execute en cas d'erreur

Vous pouvez intégrer cette forme rapidement et facilement dans vos codes.

Si une erreur se produit, le système affiche certes une erreur mais le script continue et risque donc de planter !

De plus, cette méthode est assez grossière. Elle essaye une instruction et intercepte n’importe quelle exception liée à cette instruction.

Cette forme minimale est donc à éviter.

Forme plus complète

1
2
3
4
try:
    resultat = numerateur / denominateur
except:
    print "Une erreur est survenue, mais laquelle ??"

Plusieurs erreurs sont susceptibles d’intervenir, chacune levant une exception différente:

  • NameError : l’une des variables numerator ou denominator nator n’a pas été définie (elle n’existe pas).
  • TypeError : l’une des variables numerator ou denominator ne peut diviser ou être divisée (les chaînes de caractères ne peuvent être divisées, ni diviser d’autres types, par exemple).
  • ZeroDivisionError : Si denominator vaut 0.

Il va donc falloir ici préciser le type d’exception que nous souhaitons traiter.

1
2
3
4
5
6
7
8
try:
    resultat = numerateur / denominateur
except NameError:
    print "La variable numerateur ou denominateur n'a pas ete definie."
except TypeError:
    print "La variable numerateur ou denominateur est d'un type incompatible avec une division."
except ZeroDivisionError:
    print "La variable denominateur est egale a 0."

Il est possible d’afficher le message de l’exception à l’aide du mot clé “as”.

1
2
3
4
try:
    resultat = numerateur / denominateur
except NameError as exceptionText:
    print "Voici l'erreur: %s" % (exceptionText)

Objectif : Garder le maximum de contrôle sur son code afin d’anticiper les erreurs.

Cours basé sur les travaux de Vincent Le Goff

Qu'avez-vous pensé de cet article ?
J'aime
0%
Merci
67%
Pratique
0%
Incomplet
33%
Rien de neuf
0%
A propos de l'auteur
Olivier Schmitt
Photographe professionnel, originaire d'Alsace (France), ancien Directeur Technique sur les films d'animation "Minions", "Moi, Moche et Méchant" et "Le Lorax".
Commentaires
Laisser une réponse

Laisser une réponse