“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 94 — #104
i
i
i
i
i
i
i
i
94
2
• La programmation déclarative
Nous voudrions pouvoir détecter les erreurs et les traiter à l’intérieur d’un programme pendant son exécution. Le programme ne devrait pas s’arrêter quand elles
arrivent. Au contraire, il devrait transférer l’exécution vers une autre partie qui s’appelle le gestionnaire d’exceptions, et passer à ce gestionnaire une valeur qui décrit
l’erreur.
À quoi le mécanisme de traitement d’exceptions ressemblerait-il ? Nous pouvons
faire deux observations. D’abord, il doit pouvoir confiner l’erreur, la mettre en « quarantaine » pour qu’elle ne contamine pas tout le programme. Nous appelons ceci le
principe d’endiguement d’erreurs. Supposons que le programme est fait des « composants » organisés de façon hiérarchique. Chaque composant est fait de composants
plus petits. Nous mettons « composant » entre guillemets parce que le langage ne doit
pas forcément avoir un concept de composant. Il doit seulement être compositionnel,
c’est-à-dire que les programmes sont construits en couches. Le principe d’endiguement d’erreurs dit alors qu’une erreur dans un composant devrait être attrapée à la
frontière du composant. En dehors du composant, l’erreur est invisible ou signalée
proprement.
Le mécanisme fait alors un « saut » de l’intérieur du composant vers sa frontière.
La deuxième observation est que ce saut devrait être une opération. Le mécanisme
devrait pouvoir, en une opération, sortir d’un nombre quelconque de niveaux de
contexte imbriqués. La figure 2.21 montre ce qui se passe. Dans notre sémantique,
nous pouvons définir un contexte comme une entrée sur la pile sémantique, c’est-à-dire
une instruction qui sera exécutée plus tard. Les contextes imbriqués sont créés par les
appels de procédure et les compositions séquentielles.
=
saut
des exceptions
Un contexte de capture
=
= Levez une exception
Un contexte d’exécution
Figure 2.21 Le traitement d’exceptions.
Le modèle déclaratif ne peut pas faire le saut en une seule opération. Le saut doit
être codé explicitement comme une série de petits sauts, un par contexte, avec des
Précédent

- 109/370

Suivant