Vous êtes sur la page 1sur 4

La gestion des exceptions

1- Introduction
Les exceptions sont les opérations qu’effectue un interpréteur ou un compilateur lorsqu’une
erreur est détectée au cours de l’exécution d’un programme. En règle générale, l’exécution du
programme est alors interrompue, et un message d’erreur plus ou moins explicite est affiché.
Exemple :

print(1/0)

---------------------------------------------------------------------------

ZeroDivisionError Traceback (most recent call last)

<ipython-input-3-2fc232d1511a> in <module>
----> 1 print(1/0)

ZeroDivisionError: division by zero

Le message d’erreur proprement dit comporte deux parties séparées par un double point : d’abord
le type d’erreur, et ensuite une information spécifique de cette erreur.
2- Traiter une exception
On utilise la combinaison de mots-clef try/except pour créer des blocs d’instructions, où les
instructions pouvant mener à une erreur, pourront être gérées.

try:
# ce qui peut produire une exception
except NomException:
# ce qu'il faut faire si l'exception se déclanche

- Exemple

def fct1():
try:
1/0
except:
print('Exception')
fct1()

Exception

1
def fct2():
try:
1/0
except ZeroDivisionError:
print('ZeroDivisionError')
fct2()

ZeroDivisionError

def fct3():
try:
1/0
except Exception as e:
print(e)
fct3()

division by zero
On peut gérer plusieurs exceptions simultanément:

try :
A = int(input('Donner un premier entier : '))
B = int(input('Donner un premier entier : '))
print(A/B)
except ZeroDivisionError :
print("Attention !! division par zéro")
except ValueError:
print("vous devez saisir des valeurs entieres")

Donner un premier entier : 1


Donner un premier entier : 0
Attention !! division par zéro
Mots − cle f f inally / else

try:
# ce qui peut produire une exception
except NomException:
# ce qu'il faut faire si l'exception se déclenche
else:
# ce qu'il faut faire si aucune exception n'a été levée
finally:
# ce qui sera exécuté dans tous les cas

- Exemple

def fct4():
try:
1 + 0

2
except:
print('Exception')
else:
print('Aucune exception')
finally:
print('Finally')
fct4()

Aucune exception
Finally

def fct5():
try:
1 + 0
except:
return 0
else:
return 1
finally:
print('Finally')

print(fct5()+2)

Finally
3
On peut aussi gérer les exceptions en utilisant l’instruction: raise

A = int(input('Donner un premier entier : '))


B = int(input('Donner un deuxième entier : '))
if B == 0 :
raise ZeroDivisionError ("Attention !! division par zéro")
#else:
# Faire quelque chose.

Donner un premier entier : 1


Donner un deuxième entier : 0

---------------------------------------------------------------------------

ZeroDivisionError Traceback (most recent call last)

<ipython-input-13-d88dd9d4e492> in <module>
2 B = int(input('Donner un deuxième entier : '))
3 if B == 0 :
----> 4 raise ZeroDivisionError ("Attention !! division par zéro")
5 #else:
6 # Faire quelque chose.

3
ZeroDivisionError: Attention !! division par zéro

3- Résumé
4- Exceptions fréquentes
• NameError: variable ou fonction manipulée non déclarée
• TypeError: type de la variable incohérent avec l’opérationdemandée
• ValueError: le type est correct, mais pas la valeur
• ZeroDivisionError: division par zéro
• IndexError / KeyError: tentative d’accès à uneséquence/dictionnaire avec un indice/clé
inexistant
• FileNotFoundError: le fichier n’existe pas
• IOError: erreur lors de la manipulation d’un fichier
• SyntaxError: erreur de syntaxe (indentation, parenthèse. . . )
4- Exercices
- Exercice 1:
Ecrire la fonction affiche(ls, pos) qui affiche la valeur qui se trouve dans la position pos de la liste
ls.
Une exception IndexError sera levé si l’indice n’existe pas.
- Exercice 2:
Ecrire un programme qui demande à l’utilisateur d’écrire son age et qui gère le cas où celui-ci
n’entre pas un nombre.
- Exercice 3:
sin( x )
Ecrire une fonction sinc qui prend en entrée un nombre x et renvoie la valeur si x 6= 0 et 1
x
sinon.
Le programme doit gérer une exception. La fonction sin est disponible dans le module math de
Python.

Vous aimerez peut-être aussi