“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 100 — #110
i
i
i
i
i
i
i
i
100
2
• La programmation déclarative
2.7.4 Les exceptions système
Le système Mozart lui-même lève certaines exceptions qui s’appellent des exceptions système. Elles sont des enregistrements avec une des trois étiquettes failure
(« échec »), error (« erreur ») ou system (« système ») :
– failure : indique une tentative de réalisation d’un lien incompatible (par
exemple, 1=2) en mémoire. On l’appelle aussi un échec d’unification.
– error : indique une erreur dans l’exécution du programme, C’est une situation
qui ne devrait pas se produire pendant une opération normale. Ce sont des erreurs
de type ou des erreurs de domaine. Une erreur de type se produit quand une
opération est invoquée avec un argument de type erroné, par exemple essayer
d’appeler une non procédure ({foo 1}, où foo est un atome), ou d’additionner
un entier avec un atome (X=1+a). Une erreur de domaine se produit quand une
opération est invoquée avec un argument en dehors de son domaine d’application
(même si le type est correct), par exemple la racine carrée d’un entier négatif, la
division par zéro ou la sélection d’un champ d’enregistrement qui n’existe pas.
– system : indique une erreur qui arrive dans l’environnement du processus
Mozart du système d’exploitation, par exemple une situation imprévisible comme
un fichier ou une fenêtre qui sont fermés de l’extérieur d’une application ou
l’échec d’une tentative d’ouverture d’une connexion entre deux processus Mozart
dans la programmation répartie.
17
Les informations dans l’enregistrement de l’exception dépendent de la version de
Mozart. Le programmeur ne devrait donc se fier qu’à l’étiquette. Par exemple :
fun {One} 1 end
fun {Two} 2 end
try {One}={Two}
catch
failure(...) then {Browse caughtFailure}
end
La forme failure(...) correspond à tout enregistrement dont l’étiquette est
failure.
2.8 EXERCICES
➤ Exercice 1 — Les identificateurs libres et liés
Prenez l’instruction suivante :
proc {P X}
if X>0 then {P X-1} end
end
17. Voir chapitre 11 de [97].
Précédent

- 115/370

Suivant