A HUME programozási nyelv

Kivételkezelés



A kivételkezelés több részre bomlik ebben a nyelvben az alábbiak szerint:

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.