A kivételkezelés Nemerlében teljesen hasonlóan működik, mint C#-ban. Az egyetlen lényeges eltérés, hogy a kivételkezelő ágak leírásának szintaxisa a mintaillesztéshez hasonlít.
Kivétel kiváltására a throw utasítást kell használni.
Ennek paraméter nélküli változata a kivételkezelő ágakban használható arra, hogy a kivételt újra kiváltsuk, vagyis továbbterjesszük a hívási lánc mentén.
A kivételkezeléshez tehát a megszokott try, catch, finally hármas használható. Szintaxisa:
A try blokkban azok az utasítások szerepelnek, melyeknek a kivételeit valamilyen módon le szeretnénk kezelni. Ha valamelyik utasítás végrehajtása során kivétel váltódik ki, a blokk végrehajtása megszakad és a vezérlés a catch, ill. finally blokkoknak megfelelően folytatódik.
A catch és finally blokkok közül legfeljebb az egyik elhagyható.
A catch blokk tartalmazza a kivételkezelő ágakat, mintaillesztés-szerű szintaxissal leírva. Kétféle "mintaillesztés" alkalmazható: típusillesztés, ill. a mindenre illeszkedő minta. Típusillesztés esetén akkor illeszkedik a kivétel a mintához, ha a kivétel típusa megegyezik a megadott típussal, vagy annak egy altípusával. Az illesztéshez őrfeltételt is megadhatunk a when kulcsszó után, ezek a kivétel objektumra (például annak attribútumértékeire) tesznek további megszorításokat. Az "_" jel a mindenre illeszkedő minta, nevének megfelelően tetszőleges kivételre illeszkedik.
A kivételkezelő ágak sorrendje lényeges, mivel kivétel fellépése esetén az első illeszkedő ág kódja fog lefutni. Így értelemszerűen a mindenre illeszkedő minta csak az utolsó ág lehet, ill. a specfikusabb kivételosztályok megelőzik az álatalánosabbakat.
A finally blokk minden esetben végrehajtásra kerül, akár lépett fel kivétel, akár nem. Így ideális clean-up kód elhelyezésére, például egy fájl objektum lezárására. A Nemerlében is érvényes "szabály", hogy ebben a blokkban kerülendő az olyan kód megadása, amely újabb kivételt válthat ki.
Ha egyik kivételkezelő ág sem illeszkedik a fellépő kivételre (vagy hiányzik a catch blokk), akkor a kivétel továbbterjed a hívási lánc mentén. (Természetesen csak azután, hogy a finally blokk végrehajtásra került.)