A Cobra nyelvben a throw exception és az assert condition szintaxisú utasításokkal dobhatunk kivételt, míg a dobott kivételek kezelését a try-catch-success-finally szintaxisú utasítás-kombinációval valósíthatjuk meg.
A helyességbizonyító eszközöknél bővebben is tárgyalt assert utasítás segítségével dobhatunk kivételeket egy logikai feltétel aktuális értékétől függően. Kivételeket a throw utasítással explicit módon is kiválthatunk: a dobni kívánt kivétel objektumot -megfelelő felparaméterezés után- a throw után írva.
Kivételek kezelésére alkalmas a hagyományos try-catch blokk, de emellett megadhatunk olyan utasításokat is, amelyeket minden esetben szeretnénk végrehajtani a finally kulcsszó után és olyan kódrészletet is írhatunk, melyet csak sikeres lefutás esetén szeretnénk végrehajtatni, ezt az utasítássorozatot a success kulcsszóval kell bevezetni.
Kivétel dobódásakor az adott utasítássorozat végrehajtása megszakad, és a vezérlés átadódik a kivételkezelő blokkokhoz, ha a kivételhez nem tartozik megfelelő kezelő blokk, a kezeletlen kivétel továbbterjed a következő bennfoglaló blokk irányába, legfeljebb addig, amíg el nem éri a legkülső szintet. A kivétel kezelő blokk utasításainak lefutása után a vezérlés a kezelő blokk szintjén következő utasításokkal folytatódik tovább.
A Cobra gondoskodik róla, hogy az esetlegesen felmerülő hibákat a lehető legrövidebb idő alatt detektálhassuk és javíthassuk, erre szolgál a nagyon részletes „post-mortem" exception report, tudósítás a kivétel körülményeiről.
Amikor egy Cobra program egy kezeletlen kivételt dob, egy szöveges, könnyen értelmezhető leírás készül a program aktuális állapotáról és a kivétel jellemzőiről. A leírás tartalmazza a környezet tulajdonságait: a program nevét, a dátumot és a pontos idejét a kivétel kiváltódásának, a parancssori argumentumokat. Emellett a leírásban szerepelnek a kivétel dobás körülményeinek részletei, az objektum-táblázatok és a verem aktuális állapotának részletezett leírása, ha a cobra -detailed-stack-trace vagy a cobra -dst kapcsoló be volt állítva.
A leírás HTML formátumban készül, így segítve a könnyű olvashatóságot és navigációt.
Az exception jellemzőinek részletezésénél szerepel a kivétel pontos helye, a filenévvel és a kódsor számával együtt megadva. Ezen kívül a kivételre alkalmazott .toString eredménye és a kivételhez tartozó üzenet illetve az exception minden attribútuma.
Az assert/require/ensure utasításokkal kiváltott exceptionök esetén szerepel a leírásban a logikai kifejezés szintről-szintre történő kiértékelése, hasonlóan a szintaktikai fához, ezt a technikát expression breakdownnak nevezik.
A reportban szerepel a this értéke, a thishez tartozó objektum táblázat és egyéb kifejezés táblák. A this illetve az expression breakdown egyéb objektumaihoz tartozó objektumtáblák HTML linkekként érhetőek el.
Minden objektumtábla tartalmazza az objektum osztályának nevét, a .toString eredményét és minden attribútumának értékét alfabetikus sorrendben és linkeket is tartalmazhat egyéb objektumtáblákra.
Az objektumhoz tartozó táblázat szerkezete felüldefiniálható, bővíthető, az .extendObjectTable implementálásának segítségével.
A részletes verem leírás tartalmazza minden elem esetében az objektumok szokásos leírását, az argumentumok eredeti értékét emellett a paraméterek és lokális változók utolsó megváltozott értékét. A részletes stack monitorozás azonban lelassíthatja akár 4-szeres mértékben is a programot, így default beállításként ki van kapcsolva a -detailed-stack-frame opció.
Az assert, ensure és require utasítások esetében egy link mutat a megfelelő kódrészletre, melyet a bekonfigurált szövegszerkesztőben nyit meg a program, ha a megfelelő COBRA_EDIT_LINK környezetváltozó be volt állítva.
Interaktív, command line módban az interpreter javaslatokat is tesz a hibák javítására.