“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 99 — #109
i
i
i
i
i
i
i
i
2.7 Les exceptions
99
Remarquez que cette instruction try ne capture pas l’exception ; elle exécute simplement CloseFile après ProcessFile. Nous pouvons combiner la capture de
l’exception et l’exécution d’une instruction terminale :
try {ProcessFile F}
catch X then
{Browse ´ *** Exception ´#X#´ avec le fichier *** ´}
finally {CloseFile F} end
Cette instruction se comporte comme deux instructions try imbriquées : la plus
intérieure avec seulement une clause catch et la plus extérieure avec seulement une
clause finally.
La correspondance de formes
Une instruction try peut utiliser la correspondance de formes pour capturer uniquement les exceptions qui correspondent à une forme donnée. Les autres sont passées à
l’instruction try suivante (qui entoure la première). La nouvelle syntaxe :
try s
catch p 1 then s 1
[] p 2 then s 2
...
[] p n then s n
end
est traduite en langage noyau comme :
try s catch X then
case X
of p 1 then s 1
[] p 2 then s 2
...
[] p n then s n
else raise X end end
end
Si l’exception ne correspond à aucune des formes, elle sera simplement levée de
nouveau.
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
2.7 Les exceptions
99
Remarquez que cette instruction try ne capture pas l’exception ; elle exécute simplement CloseFile après ProcessFile. Nous pouvons combiner la capture de
l’exception et l’exécution d’une instruction terminale :
try {ProcessFile F}
catch X then
{Browse ´ *** Exception ´#X#´ avec le fichier *** ´}
finally {CloseFile F} end
Cette instruction se comporte comme deux instructions try imbriquées : la plus
intérieure avec seulement une clause catch et la plus extérieure avec seulement une
clause finally.
La correspondance de formes
Une instruction try peut utiliser la correspondance de formes pour capturer uniquement les exceptions qui correspondent à une forme donnée. Les autres sont passées à
l’instruction try suivante (qui entoure la première). La nouvelle syntaxe :
try s
catch p 1 then s 1
[] p 2 then s 2
...
[] p n then s n
end
est traduite en langage noyau comme :
try s catch X then
case X
of p 1 then s 1
[] p 2 then s 2
...
[] p n then s n
else raise X end end
end
Si l’exception ne correspond à aucune des formes, elle sera simplement levée de
nouveau.
© Dunod – La photocopie non autorisée est un délit
