0% ont trouvé ce document utile (0 vote)
26 vues14 pages

Exceptions Python

Transféré par

video jeux
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)
26 vues14 pages

Exceptions Python

Transféré par

video jeux
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

Les exceptions Comment gérer les erreurs en Python

Stéphane Guinard

To cite this version:


Stéphane Guinard. Les exceptions Comment gérer les erreurs en Python. École d’ingénieur. France.
2018. �cel-02182401�

HAL Id: cel-02182401


[Link]
Submitted on 12 Jul 2019

HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est


archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents
entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non,
lished or not. The documents may come from émanant des établissements d’enseignement et de
teaching and research institutions in France or recherche français ou étrangers, des laboratoires
abroad, or from public or private research centers. publics ou privés.
Les exceptions en Python
Stéphane Guinard

To cite this version:


Stéphane Guinard. Les exceptions en Python. École d’ingénieur. France. 2018. �cel-02182401�

HAL Id: cel-02182401


[Link]
Submitted on 12 Jul 2019

HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est


archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents
entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non,
lished or not. The documents may come from émanant des établissements d’enseignement et de
teaching and research institutions in France or recherche français ou étrangers, des laboratoires
abroad, or from public or private research centers. publics ou privés.
Stéphane Guinard

Les exceptions
Comment gérer les erreurs en Python ?

Division des enseignements en informatique


Rappel : les erreurs

Prenons un fichier contenant le code python suivant :


def une_fonction ( a ) :
return 1 / a

def un e_ au tre _f onction () :


une_fonction (0)

une_ au tr e_ fo nc tion ()

2
Rappel : les erreurs

L’exécution de ce scripte provoque l’erreur suivante :


Traceback ( most recent call last ) :
File " script . py " , line 7 , in < module >
un e_ au tr e_ fonction ()
File " script . py " , line 5 , in une_autre_fonction
une_fonction (0)
File " script . py " , line 2 , in une_fonction
return 1 / a
Zero Divisi onError : division by zero

Comment lire les erreurs


Un message d’erreur se lit de bas en haut ! Ainsi on peut
remonter la pile des appels.

3
Erreurs et exceptions

Sous l’erreur ci dessus, se cache en réalité une exception de type


ZeroDivisionError.

Qu’est ce qu’une exception ?


Mécanisme pour gérer des erreurs survenues lors de l’exécution
d’un programme.

4
Gestion des exceptions

Pourquoi faut-il gérer certaines exceptions ?

• Apporter une solution à un problème bloquant


• Éviter d’interrompre le programme

Il existe d’autres solutions, mais c’est la manière de faire en


Python :
def une_fonction ( a ) :
# Gestion de l ’ erreur en amont
if a == 0:
print ( " Division par 0 impossible ! " )
return None
else :
return 1 / a

5
Soulever une exception

Des exceptions sont automatiquement levées par les fonctions


built-in de python, cependant, il est possible de lever ses propres
exception à l’aide du mot-clef raise.
def ma_fonction ( age ) :
if age < 0:
raise ValueError ( " ’ age ’ doit etre positif
!")
# suite de la fonction

>>> ma_fonction ( -2)


Traceback ( most recent call last ) :
File " < interactive input > " , line 1 , in < module >
File " < interactive input > " , line 3 , in
ma_fonction
ValueError : ’ age ’ doit etre positif !

6
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

7
Traiter une exception

On utilise la combinaison de mots-clef try/except pour créer des


bloques d’instructions où les instructions pourront être gérées.
Exemple :
liste = [ ’ toto ’ , ’ titi ’ , ’ tata ’ ...]
i = int ( input () )
try :
choix = liste [10 // i ]
except Zer oDivisionError :
print ( " Division par zero impossible " )
choix = liste [0]
except IndexError :
print ( " Probleme d ’ index " )
choix = liste [ len ( liste ) ]

8
Traiter une exception

Mots-clef finally et 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

9
Traiter une exception

Mots-clef finally et else :


Exemple :
try :
f = open ( ’ fichier . txt ’ , ’w ’)
# é criture dans le fichier
except IOError :
print ( " Probleme lors de l ’é criture du fichier
")
else :
print ( " Ecriture OK " )
finally :
f . close ()

10
Cas des fichiers

Astuce contre les oublis de fermeture, le mot-clef with :


try :
with open ( ’ fichier . txt ’ , ’w ’) as f :
# é criture dans le fichier
except ( IOError , FileNotFoundError ) :
# g é rer l ’ erreur

11
Exceptions fréquentes

• NameError : variable ou fonction manipulée non déclarée


• TypeError : type de la variable incohérent avec l’opération
demandée
• ValueError : le type est correct, mais pas la valeur
• ZeroDivisionError : division par zéro
• IndexError / KeyError : tentative d’accès à une
sé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...)

12

Vous aimerez peut-être aussi