CommencezCommencez gratuitement

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

Voir le cours

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 :

  • try exécutez le code tel quel,
  • si un ZeroDivisionError survient, affichez "Cannot divide by zero!",
  • si un IndexError survient, 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))
Modifier et exécuter le code