tite fractale

Exceptions

1. Introduction

Sans refaire toute l’histoire des paradigmes des langages de programmation, il est tout de même intéressant de rappeller que :

2. Premières exceptions

Ouvrir une console Python et taper les instructions suivantes :

Essayer de déclencher (ou lever) un maximum d’exceptions parmis celles listées ici. Vous copierez la liste en ajoutant l’instruction correspondante à droite de chaque exception.

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- StopIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError    1/0
...

Essayer aussi les instructions :

Dans les langages orientés objets, les exceptions sont bien sûr des objets. La structure hiérarchique des exceptions permet de grandes finesses lors de leur récupération.

3. Sur un exemple

3.1. Présentation

Les exceptions représentent le plus souvent un problème que le programme a rencontré à l’exécution (le compilateur a compilé sans rien détecter d’anormal, ou nous avons affaire à un langage de script). Et le SGE permet au programmeur d’aider son programme à s’en tirer tout seul.

Le programme que nous allons étudier propose une utilisation détournée du SGE, puisque le flot du programme est dirigé par les exceptions.

Notons que par soucis de simplification, nous avons gardé quelques if. Il aurait été en effet possible de remplacer les if par un système utilisant assertEqual et ses camarades.

3.2. Dissection

3.2.1. Exceptions propres au programme

Dans les langages orientés objets, les exceptions sont bien sûr des objets.

Un programme peut créer ses propres types d’exception et les placer judicieusement dans la hiérarchie existante.

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- PlusOuMoinsException
      |    +-- StopException
      |    +-- BravoException
      |    +-- TropException
      +-- StopIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError

3.2.2. Essaie de m’attraper

Le plus souvent, les langages utilisent les instructions try et catch.

En Python, c’est try et except (voir la documentation officielle).

try et catch peuvent ressembler à switch et case, mais le case peut avoir lieu plus haut dans les appels.

3.2.3. Déclencher une exception

raise permet de déclencher une exception existant dans le langage ou une exception propre au programme.

3.2.4. Rôle de la hiérarchie

Où est gérée l’exception TropException ?

3.2.5. Finalement

Les instructions après le finally seront toujours exécutées. Toujours ?

C’est en général ici que l’on ferme des fichiers, des connexions…

4. Mise en pratique

  1. Choisir un langage autre que Python.
  2. Trouver la syntaxe relative aux exceptions.
  3. Trouver une liste des exceptions fournies par le langage.
  4. En déclencher quelques-unes.
  5. Implémenter le jeu du plus ou moins avec des exceptions.



Christophe Gragnic, le 26/09/2014, 15h05'58".






Page générée le 27/05/2021, 09h53'27" (source).
historique de la page
historique global