CommencerCommencer gratuitement

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

Afficher le cours

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