Vous êtes sur la page 1sur 4

CPGE-AGADIR MP-PSI

Les exceptions
1- Introduction
 De nombreux langages de programmation de haut niveau possèdent un mécanisme permettant de gérer
les erreurs qui peuvent intervenir lors de l’exécution d’un programme. Le mécanisme de gestion d’erreur le
plus répandu est celui des exceptions.
 La gestion des exceptions est un mécanisme de contrôle des erreurs d’exécution.

Exemple : Python va lever une exception dans les cas suivants :

>>> print(55/0)
ZeroDivisionError : division by zero
Le message d'erreur comporte deux parties séparées par un double point : d'abord le type d'erreur
ZeroDivisionError, et ensuite une information spécifique de cette erreur division by zero.

>>> L=[4,2,7]
>>> print(L[4])
IndexError: list index out of range

>>> f=open("toto.txt","r")
FileNotFoundError: [Errno 2] No such file or directory: 'toto.txt'

2- Syntaxe

try:
 Le bloc d'instructions de try est exécuté par Python sous
Traitement_try réserve.
 Si une exception se produit, le reste de la clause try est
except [NomException1]:
ignorée.
Traitement_Exception1  Si une erreur survient, alors Python exécute le bloc qui suit
except.
[except NomException2:  Si aucune erreur ne s'est produite, c'est le bloc de else qui est
exécuté.
Traitement_Exception2  Si une exception ne correspond pas à l’exception dans la
clause except, Python affichera un message d’erreur.
except NomException3:
 la clause finally est toujours exécutée.
Traitement_Exception3

else:

Traitement_else

finally:

Traitement_finally ]

Exceptions 1 M.Gueroihi
3- Exemple

def divise(x, y):


try:
result = x / y
except ZeroDivisionError:
print("erreur de division par zéro!")
except TypeError:
print("erreur de type!")
else:
print("le resultat est", result)
finally:
print("exécution terminée")
Appels

>>> divise(3,4)
le resultat est 0.75
exécution terminée

>>> divise(4,0)
erreur de division par zéro!
exécution terminée

>>> divise(4,"cpge")
erreur de type!
exécution terminée

4- Lever une exception

Pour lever une exception on utilise le mot-clé raise:

Syntaxe:

raise TypeDeLException("message à afficher")

 Exemple1:

#programme principal
tab=[6,9,4,5,2]
try:
for i in range(1,10):
if (i > 4): raise IndexError
print(tab[i], end= ' ')
except IndexError:
print( " Erreur : indice hors limite")

Exceptions 2 M.Gueroihi
 Exemple 2

annee = input("Donner l'année:") # L'utilisateur saisit l'année


try:
annee = int(annee) # On tente de convertir l'année
if annee<=0:
raise Exception("l'année saisie est négative ou nulle")
except ValueError as err:
print("La valeur saisie n'est pas un nombre")
except Exception as er:
print (er)
finally:
print("L'année saisie est",annee)

5- L'instruction assert

Les assertions sont un moyen simple de s'assurer, avant de continuer, qu'une condition est respectée.
Syntaxe:

assert test
Exemple:

annee = input("Saisissez une année supérieure à 0 :")


try:
annee = int(annee) # Conversion de l'année
assert annee > 0
except ValueError:
print("Vous n'avez pas saisi un nombre.")
except AssertionError:
print("L'année saisie est inférieure ou égale à 0.")

Exercices
Exercice1

Ecrire un script qui calcule la racine carrée d'un nombre, avec gestion des exceptions.
Par exemple :

>>>
Entrer un nombre : go
go n'est pas un nombre valide !
Entrer un nombre : -5.26
-5.26 n'est pas un nombre valide !
Entrer un nombre : 16
La racine carrée de 16.0 est : 4.0
>>>

Exceptions 3 M.Gueroihi
Exercice 2
Soit le script :
i = 0
while True:
i += 1
print(i)

Il s'agit d'une boucle sans fin.


Pour arrêter ce programme, il faut appuyer sur les touches CTRL + C, ce qui lève une exception de type
KeyboardInterrupt :

>>>
1
...
1216
1217
1218
1219
1220
Traceback (most recent call last):
raise KeyboardInterrupt
KeyboardInterrupt
>>>

Compléter le script pour gérer proprement l'exception :


>>>
1
...
966
967
968
Fin du programme
>>>

Exercice 3 :

 Il s’agit d’écrire une fonction de saisie qui prendra en paramètre un entier n et renverra une valeur
comprise entre 1 et n, tapée au clavier par l’utilisateur.
 Les différentes erreurs qui pourront se produire seront :
- n est inférieur à 1.
- l’utilisateur a entré un nombre qui n’est pas compris entre 1 et n
- l’utilisateur n’a pas entré un nombre
 Chaque erreur devra être détectée par la fonction et être signalée par une exception spécifique.

Exceptions 4 M.Gueroihi

Vous aimerez peut-être aussi