CommencerCommencer gratuitement

Intercepter des exceptions

Avant d’écrire vos propres exceptions personnalisées, assurez-vous de maîtriser 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 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 le résultat dans la console. Il y a deux opérations risquées dans cette fonction : d’abord, si l’élément que l’on essaie d’inverser vaut 0, le code déclenchera une exception ZeroDivisionError. Ensuite, si l’indice passé à la fonction est hors limites pour la liste, le code déclenchera une IndexError. Dans les deux cas, le script sera interrompu, ce qui peut ne pas être souhaitable.

Cet exercice fait partie du cours

Programmation orientée objet en Python

Afficher le cours

Instructions

Utilisez un schéma try - except - except (avec deux blocs except) à l’intérieur de la fonction pour intercepter et gérer deux exceptions comme suit :

  • try exécutez le code tel quel,
  • si une ZeroDivisionError survient, affichez "Cannot divide by zero!",
  • si une IndexError survient, affichez "Index out of range!"

Vous saurez que tout est correct si le code s’exécute sans erreurs et que la console affiche :

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))
Modifier et exécuter le code