Az of, catch, after szekciók opcionálisak, mindaddig, amíg megtalálható a catch vagy az after rész. Így a következők is helyes kifejezések:
Másrészt kivételeket a throw(...)-val lehet kiváltani, ahol a "..." helyére tetszőleges term írható.
A catch és throw eszközök kifejezés-kiértékelés felügyeletére adnak módot. Kifejezés-kiértékelés során fellépő hiba alapértelmezett hatása, hogy a kifejezést kiértékelő processz abnormálisan terminál. Ez a viselkedés catch bevezetésével módosítható, a következőképpen: A catch Kifejezes utasítás a Kifejezes értékét adja vissza, ha a kiértékelés közben nem lép fel hiba. Ellenkező esetben visszatérési értéke sor típusú, {‘EXIT’,Hiba_oka}, ahol az utóbbi sorelem a hiba okáról tájékoztató atom. A vezérlés a függvényt hívóhoz rendszerint a kiértékelés végeztével adódik vissza. Viszont ha egy throw/1 kiértékelésére kerül sor, a vezérlés azonnal visszakerül a catch-hez. Mivel a catch-ek egymásba ágyazhatóak, itt a legutoljára kiadott catch Kifejezés hívásról van szó. A throw/1 kiértékelés futás-idejű hibát ad, ha nem a kiértékelés nem catch klózban történik.
Egy egyszerű ERLANG shell a következő módon írható:
Az io:parse_expr/1 standard könyvtári függvény beolvas és kiértékel egy ERLANG kifejezést és {form, Exprs} listát ad vissza, ha a kifejezés helyes. Ez esetben az eval/1 első mintája illeszkedik, és meghívjuk az eval:exprs/2 függvényt a kifejezés kiértékelésére. Ezt egy catch-en belül tesszük, hiszen nem tudhatjuk, hogy a kifejezéskiértékelés dob-e kivételt vagy sem. A catch kifejezéshez hiba esetén az {‘EXIT’, What}, sikeres kiértékelés esetén a {value, What, _} minta illeszkedik.
Tekintsük a következő példát, mely integer listákat képes felismerni:
A következő függvényhívás:
Látható, hogy a rekurzió menetét megkerülve jutottunk ki a rekurzióból.