Raznolikost zadataka koji se danas rješavaju uz pomoć ličnih računara pruža postojanje ogromnog skupa aplikativnih programa. Pogodnost rada sa softverom u velikoj mjeri ovisi o njegovoj pouzdanosti, koja se izražava u odsustvu hitnih situacija. Međutim, mnogi se programi sruše u najnepovoljnijem trenutku. Zašto?
Mehanizam za izuzeće koristi se za praćenje i rukovanje posebnim, abnormalnim ili pogrešnim situacijama koje se pojave tokom rada računarskih programa pod kontrolom modernih operativnih sistema. Izuzeci mogu biti hardver (baca ga procesor) i softver (baca sama aplikacija ili neka dodatna vanjska komponenta).
Bez obzira na vrstu, izuzetak se može uhvatiti i pravilno rukovati njime. Neuhvaćeni izuzeci idu na osnovni rukovatelj runtime bibliotekom ili na rukovatelj instaliran operativnim sistemom. Ako se to dogodi, program se ruši s porukom ili abnormalnim prozorom za prekid (u sustavu Windows). Ako rukovatelj operativnim sistemom nije radio (na primjer, namjerno je uklonjen), program se "tiho ruši". Dakle, programi se ruše zbog izuzetaka s kojima se ne može rukovati. Razlozi za pojavu izuzetaka su različiti.
U ogromnoj većini slučajeva, programi se ruše zbog izvršavanja vlastitog koda koji sadrži eksplicitne ili implicitne pogreške u implementaciji. Lista mogućih uzroka hitnih slučajeva vrlo je duga. To su i klasične greške u operacijama brojeva s pomičnom zarezom (na primjer, podjela s 0) i greške u radu s memorijom (čitanje ili pisanje izvan prostora adrese procesa, pristup zaštićenim stranicama, upisivanje u područje memorije samo za čitanje), preljevni stog zbog beskonačne rekurzije itd. U tim se slučajevima bacaju izuzeci hardvera ili izuzeci operativnog sistema.
Implicitne pogreške uključuju razne slučajeve nedovoljnog filtriranja ulaznih podataka, nedostatak provjere vrijednosti pokazivača i još mnogo toga. Takvi nedostaci dovode do izuzetnih situacija samo u određenim slučajevima.
Pogreške u implementaciji mogu se naći i u vanjskim komponentama koje aplikacija koristi. Na primjer, u dinamičkim knjižnicama koje pružaju potrebnu funkcionalnost ili dodatne module. Programski kod koji se implicitno učitava u adresni prostor procesa (na primjer, radi presretanja određenih API funkcija) također može uzrokovati pad programa.
Mnoge komponente i biblioteke (na primjer, ADO na Windowsima) koriste programski mehanizam za izuzeće kao prioritet za prijavljivanje grešaka. Odsutnost ili nepotpuno rukovanje iznimkama kod ove vrste aplikacije može dovesti do pada sistema čak i u potpuno bezopasnim situacijama (poput gubitka veze s bazom podataka).