Az Afnix programozási nyelv

Kivételek

A kivétel egy váratlan változás a végrehajtási folyamatban. A kivételek dobása a throw lefoglalt kulcsszóval történik. Amikor egy kivétel dobására kerül sor a végrehajtási folyamat megszakad és létrejön egy a kivétel információit tartalmazó objektum. Az ilyen kivétel ezután tárolódik a veremben, amíg egy kivételkezelõ el nem kapja.

if (not (number-p n)) (throw "type-error" "invalid object found" n)

Az elsõ paraméter a kivétel azonosítója, a második paraméter a kivétel kiváltó oka, a harmadik paraméter a kivétel objektum. Az elsõ két paraméter mindig egy string, a harmadik paraméter bármilyen típusú objektum lehet.

throw throw "type-error" throw "type-error" "invalid argument"

A try lefoglalt kulcsszó megpróbál végrehajtani egy formot, és elkapja a dobott kivételeket.

try (+ 1 2) try (throw) try (throw "hello") try (throw "hello" "world") try (throw "hello" "world" "folks")

A második formájában a try képes elfogadni mégegy formot, ami akkor hajtódik végre, ha sor került egy kivétel elkapására. Ilyenkor egy új nameset jön létre, és a speciális what szimbólum jön létre, a kivételobjektumhoz kötve.

try (throw "hello") (eval what:eid) try (throw "hello" "world") (eval what:reason) try (throw "hello" "world" 2000) (eval what:object)