Sommaire

Exception

1. Levée

Même si le système d’exception n’est pas à proprement parler une composante de la programmation orientée objet, il est tout de même bien présent dans les langages orientés objet, notamment en Python.

Il existe plusieurs façons de gérer les erreurs dans un programme (ouverture d’un fichier inexistant, division par zéro, accès à un membre inconnu...). Une fonction peut retourner un certain entier (-1 par exemple) pour signifier une erreur. Un inconvénient est que si la fonction est déjà censée retourner une valeur logique, renvoyer cette valeur « technique » d’erreur viendrait perturber la sémantique de la fonction. Par exemple, on s’attendrait intuitivement à ce qu’une fonction division() renvoie une valeur flottante, non un booléen.

De plus, si jamais la fonction appelante ne sait pas quoi faire de cette valeur, elle est obligée de la propager elle-même à celle qui l’a appelée, et ainsi de suite jusqu’à ce que le code d’erreur soit utilisé pour résoudre le problème, ou du moins le signaler (via un message à l’utilisateur ou une inscription dans un journal de log) :

import sys  
  
def division(a, b):  
    if b == 0:  
        return False  
    return a / b  
  
def test(a, b):  
    resultat ...