Az Objective-C-ben a C++/Java szintaxisához nagyon hasonló szintaktikával rendelkezik a kivételek kezelését támogató vezérlési struktúra. Az egyetlen jelentősebb eltérés hogy nem kulcsszavakat hanem az Objective-C-re jellemző módon, direktívákat használunk. Természetesen lehetőség van több @catch blokk használatára, valamint a @finally blokk is elhagyható.
A kivételek dobásához először példányosítanunk kell egy olyan osztályt, ami a megfelelő információkat tartalmazza. Ez tipikusan NSException vagy annak egy leszármazott osztálya. Ezután a megszokott throw utasításnak megfelelő @throw direktívát használva lehet eldobni a kivételt :
A try-blokkban dobott kivételt egy, vagy több egymás után írt catch-blokkban tudjuk kezelni. Az első blokkban érdemes a legspecifikusabb kivételeket kezelni, utána az általánosabb kivételeket, amiket esetleg tovább kéne dobni. A finally-blokkban lévő utasítások mindenképpen végrehajtódnak, kivétel kiváltódásától függetlenül.
A kivételek - a már megszokott módon, - a kiváltás helyétől felfelé, elkapásig vagy terminálásig terjednek.