Interception des exceptions en Python
En Python, par rapport à d'autres langages de programmation, il y a beaucoup de situations qui génèrent des exceptions.
Examinons-les plus en détail. Supposons que nous ayons une liste :
lst = [1, 2, 3]
Accédons à un élément de la liste qui n'existe pas :
print(lts[4])
Après l'exécution du code, une erreur (exception) s'affichera :
IndexError: list index out of range
Si nous devons continuer à travailler sans
afficher l'exception, il faut l'attraper avec
la construction try-except. Elle
a la syntaxe suivante :
try:
# code susceptible de générer une exception
except:
# gestion de l'erreur
Le bloc try doit contenir le code
qui peut contenir une exception. Si
une situation exceptionnelle se produit lors de
l'exécution de ce code, l'exécution
ne s'arrêtera pas, mais passera au code du bloc
except. Dans ce bloc, il faut
afficher un message décrivant le plus précisément
possible l'erreur survenue.
Si aucune situation exceptionnelle ne se produit
lors de l'exécution du bloc try,
alors le code utile s'exécutera simplement, et le code
du bloc except ne le sera pas.
Attrapons notre exception lors de l'accès
à un élément de liste inexistant. Pour
cela, plaçons dans le bloc try le code avec
l'erreur potentielle. Et dans le bloc except
spécifions l'affichage dans la console du message 'error:
elem is not exist' :
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Après l'exécution du code, cela affichera :
'error: elem is not exist'
Après avoir étudié la construction try-except,
le style de votre code devrait changer.
Désormais, tous les endroits où une situation
exceptionnelle peut survenir doivent être enveloppés
dans try, et dans le bloc except
il faut décrire la réaction à cette exception.
Demandez à l'utilisateur deux nombres. Divisez l'un par l'autre. Interceptez la situation exceptionnelle de division par zéro.
Demandez à l'utilisateur un nombre. Trouvez la racine carrée de ce nombre. Interceptez la situation exceptionnelle d'extraction de la racine d'un nombre négatif.
Une liste est donnée. Demandez à l'utilisateur un nombre entier. Obtenez l'élément de la liste dont le numéro a été saisi par l'utilisateur. Interceptez la situation exceptionnelle qui se produira si l'utilisateur a saisi un nombre en dehors de la plage de la liste.
Le code suivant est donné :
num = '5'
res = num + 2
print(res)
Qu'est-ce qui ne va pas avec ce code ? Corrigez ses défauts.
Le code suivant est donné :
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Qu'est-ce qui ne va pas avec ce code ? Corrigez ses défauts.