Rattraper les exceptions
Avant de commencer à écrire vos propres exceptions personnalisées, assurez-vous que vous maîtrisez les bases de la gestion des exceptions.
Dans cet exercice, on vous donne une fonction invert_at_index(x, ind)
qui prend deux arguments, une liste x
et un index ind
, et inverse l'élément de la liste à cet index. Par exemple, invert_at_index([5,6,7], 1)
renvoie à 1/6
ou 0.166666
.
Essayez d'exécuter le code tel quel et examinez la sortie dans la console. Cette fonction comporte deux opérations dangereuses : premièrement, si l'élément que nous essayons d'inverser a la valeur 0
, le code provoquera une exception ZeroDivisionError
. Deuxièmement, si l'indice transmis à la fonction est en dehors de la plage de la liste, le code provoquera une erreur IndexError
. Dans les deux cas, le script sera interrompu, ce qui n'est pas forcément souhaitable.
Cet exercice fait partie du cours
Programmation orientée objet en Python
Instructions
Utilisez un modèle try
- except
- except
(avec deux blocs except
) à l'intérieur de la fonction pour attraper et gérer deux exceptions comme suit :
try
exécuter le code tel quel,- si
ZeroDivisionError
se produit, imprimez"Cannot divide by zero!"
, - Si
IndexError
se produit, imprimez"Index out of range!"
Vous savez que vous avez réussi si le code s'exécute sans erreur et que la sortie dans la console est:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
return 1/x[ind]
a = [5,6,0,7]
# Works okay
print(invert_at_index(a, 1))
# Potential ZeroDivisionError
print(invert_at_index(a, 2))
# Potential IndexError
print(invert_at_index(a, 5))