0% ont trouvé ce document utile (0 vote)
9 vues8 pages

Cours3 - Exceptions

Le document traite des exceptions en Python, expliquant leur nécessité et la hiérarchie des types d'exceptions. Il décrit comment traiter les exceptions à l'aide de la structure 'try-except' et comment lever des exceptions personnalisées. Des exemples illustrent chaque concept pour faciliter la compréhension.

Transféré par

Kieutung Lam
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues8 pages

Cours3 - Exceptions

Le document traite des exceptions en Python, expliquant leur nécessité et la hiérarchie des types d'exceptions. Il décrit comment traiter les exceptions à l'aide de la structure 'try-except' et comment lever des exceptions personnalisées. Des exemples illustrent chaque concept pour faciliter la compréhension.

Transféré par

Kieutung Lam
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

3 – Les exceptions

INF2 – P26
1 – Les exceptions
1 . 1 – P OUR Q UOI FA I RE ?
1 . 2 – HI ÉRA RC HI E D ES EXC EPT I ON S
1 . 3 – T RA I T ER UNE EXC EPT I ON
1 . 4 – L EVER UNE EXC EPT I ON

INF2 - P26 COURS 3 - EXCEPTIONS 2


1.1 – Pour quoi faire ?
Certaines instructions en Python peuvent générer des erreurs lors de leur exécution.
Ces erreurs sont représentées par une exception.

Par exemple, ce code génère une exception qui n’est pas traitée :

def une_betise(a):
return a / 0

une_betise(12)

Traceback (most recent call last):


File ‘[Link]’, line 4, in <module>
une_betise(12) Pile d’appels
File ‘[Link]’, line 2, in une_betise
return a / 0
~~^~~
ZeroDivisionError: division by zero Type d’exception et message d’erreur

INF2 - P26 COURS 3 - EXCEPTIONS 3


1.2 – Hiérarchie des exceptions
La « maman » de toutes les exceptions en python s’appelle BaseException.

[Link]
Dans le cadre de INF2, nous ne manipulerons pas d’exception au-dessus de
Exception.

A chaque erreur son exception :


• Division par zéro à ZeroDivisionError
• Racine carré d’un nombre négatif à ValueError
• Clé de dictionnaire non existante à KeyError
• Indice non existant dans une liste à IndexError
• Multiplication de 2 str à TypeError
• …

INF2 - P26 COURS 3 - EXCEPTIONS 4


1.3 – Traiter une exception
L’arrêt du programme avec un grand message rouge c’est bien mais parfois on peut traiter le
problème J
En Python on utilise la structure de contrôle try – except – else - finally

SYNTAXE
try:
actions susceptibles de lancer une exception
except (exception1, exception2, …) as ex:
actions de gestion de lʹexception de type 1 ou 2
except (exception3, exception4, …) as ex:
actions de gestion de lʹexception de type 3 ou 4
else:
si on a aucune erreur
finally:
actions toujours exécutées quʹil y ait une exception ou pas

INF2 - P26 COURS 3 - EXCEPTIONS 5


1.3 – Traiter une exception
IMPORTANT
L’exécution du code dans le bloc try prend fin dès qu’une exception est rencontrée.
On passe alors immédiatement au bloc except correspondant.

EXEMPLE

try:
numerateur = int(input("Entrer le numérateur : "))
denominateur = int(input("Entrer le denominateur : "))
res = numerateur / denominateur
except ValueError:
print("La valeur entrée n'est pas un entier")
except ZeroDivisionError:
print("Eh oh ! On divise pas par zéro") L’entrée du numérateur se passe bien
else: L’entrée du dénominateur plante
print(f"Le résultat est : {res}")
(conversion en entier impossible)
finally:
print("Plus rien à faire !")
à On arrête l’exécution et on passe au
except, le calcul ne sera jamais fait

INF2 - P26 COURS 3 - EXCEPTIONS 6


1.3 – Traiter une exception
Parfois, il n’y a pas de traitement différencié à appliquer en fonction de l’erreur.
Pour afficher le message d’erreur tel qu’il a été écrit par le développeur, un simple print sur
l’exception suffit :
EXEMPLE

try:
numerateur = int(input("Entrer le numérateur : "))
denominateur = int(input("Entrer le denominateur : "))
res = numerateur / denominateur
except (ValueError, ZeroDivisionError) as e:
print(e)
else:
print(f"Le résultat est : {res}")
finally:
print("Plus rien à faire !")

INF2 - P26 COURS 3 - EXCEPTIONS 7


1.4 – Lever une exception
On sait gérer un code qui plante, plaçons-nous « de l’autre côté ». Il est intéressant d’informer
l’utilisateur de notre code sur l’erreur que l’on rencontre.
Ce mécanisme est la levée d’exception.

SYNTAXE
raise MonException(‘des détails’)

EXEMPLE
try:
nb_etu = int(input("Nombre d'étudiants en INF2 ? "))
if nb_etu < 0:
raise ValueError("Impossible qu'ils soient moins de 0 !")
# ...
except ValueError as e:
print(e)

INF2 - P26 COURS 3 - EXCEPTIONS 8

Vous aimerez peut-être aussi