Exceptions en Python

De knowledge
Aller à la navigation Aller à la recherche

En python on a pas un "try catch" mais un "try: except:".

C'est python il faut pas faire comme les autres.

Avec le code :

a=0
b=1/a

On récupère un :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

Normal! Mais si on fait :

a=0
try:
    b=1/a
except:
    print ("erreur")

on a bien une erreur "propre" Il y a une clause "else" pour les exceptions.

a=1
try:
    b=1/a
except:
    print ("error")
else:
    print ("so far so good")

Pour dire qu'il n'y a pas d'exception... On peut aussi réagir de façon différente en fonction des erreurs :

try:
    a=1/0
except ZeroDivisionError:
    print ("division par zero")
except:
    print ("une autre erreur")

Affiche bien "division par zero", alors que :

try:
    a=1/b
except ZeroDivisionError:
    print ("division par zero")
except:
    print ("une autre erreur")

Nous donne "une autre erreur".