A kivételek dobására és kezelésére használt kulcsszavak megegyeznek a hagyományos C++-beli megfelelőikkel, de itt is vannak eltérések.
Felügyelt osztályok esetén a kivételek mind a System::Exception ősosztályból származnak. Bevezették a nyelvbe a __finally blokkot, amelyet a catch blokk után kell írni, és a benne található utasítások minden esetben végrehajtódnak, függetlenül attól, hogy történt-e kivétel vagy nem. Erre az erőforrások megfelelő felszabadítása miatt van szükség. (C++-ban nincs finally ág, a problmát úgy szokták megoldani, hogy az erőforrásokat olyan osztályba ágyazzák be, amelynek a destruktora felszabadítja őket. Akár hagyományos módon, akár kivétel dobása révén ér véget egy alprogram, a destruktor végrehajtódik, ezért nem kell a finally ág. Ezt a megoldást nevezik RAII-nek.)
Példa:
A futtatás eredménye: