Intercepter des exceptions
Avant de créer vos propres exceptions personnalisées, assurons-nous que vous maîtrisez les bases de la gestion des exceptions.
Dans cet exercice, on vous fournit une fonction invert_at_index(x, ind) qui prend deux paramètres, une liste x et un indice ind, et inverse l'élément de la liste à cet indice. Par exemple, invert_at_index([5,6,7], 1) renvoie 1/6, soit 0.166666.
Essayez d'exécuter le code tel quel et examinez la sortie dans la console. Cette fonction comporte deux opérations risquées : d'abord, si l'élément à inverser vaut 0, le code provoquera une exception ZeroDivisionError. Ensuite, si l'indice passé à la fonction est en dehors de l'intervalle de la liste, le code provoquera une IndexError. Dans les deux cas, le script sera interrompu, ce qui peut ne pas être souhaitable.
Cette activité fait partie du cours
Programmation orientée objet en Python
Instructions de l’exercice
Utilisez un modèle try - except - except (avec deux blocs except) à l'intérieur de la fonction pour intercepter et traiter deux exceptions comme suit :
tryexécutez le code tel quel,- si un
ZeroDivisionErrorsurvient, affichez"Cannot divide by zero!", - si un
IndexErrorsurvient, affichez"Index out of range!"
Vous saurez que c'est réussi si le code s'exécute sans erreurs 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 ce code d’exemple.
# 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))