A kivételkezelés több részre bomlik ebben a nyelvben az alábbiak szerint:
-
deklarálás: deklarációs részben
exception id type
-
kiváltás: kifejezésekben
raise id expr
-
kezelés: dobozokban
handle handlers
A rendszerkivételeket vagy az érintett dobozon belül vagy egy beépített kivételkezelő segítségével kezeljük. Ha a dobozban definiáltunk kivételkezelőt a rendszerkivételre, és a kivétel a doboz végrehajtása során váltódik ki, akkor a dobozban megadott specifikus kezelő fut le. Ha a dobozban nem definiáltunk ilyet, és ugyanúgy a doboz végrehajtása során váltódik ki a kivétel, akkor a beépített kivételkezelő eljárás hívodik meg. Pontosan egy általános kivételkezelő eljárásnak kell lennie minden rendszerkivételhez, és pillanatnyilag nincs arra lehetőség, hogy ez az általános kivételkezelő eljárás a felhasználó által definiálható legyen. Vagyis csak a dobozon belüli specifikus változatot adhatja meg a felhasználó.
A következőek a
rendszerkivételek:
Div0 |
nullával való osztás |
Overflow/Underflow |
numerikus túl-/alulcsordulás |
OutOfBounds |
intervallumon kivüli vektorindex |
HeapOverflow |
kupac túlcsordulás |
StackOverflow |
verem túlcsordulás |
Timeout |
időtúllépés |
EndOfFile |
bemeneti file vége |
A doboz elején megadjuk, hogy az adott dobozban milyen kivételeket fogunk kezelni, ezekhez pedig lenniük kell egy kezelőnek a dobozon belül. A kivételkezelő nem hajthat végre számítási folyamatokat.