A személyi számítógépek segítségével manapság megoldott feladatok sokféleségét hatalmas alkalmazási programkészlet biztosítja. A szoftverrel való munkavégzés kényelme nagyban függ a megbízhatóságától, amely vészhelyzetek hiányában fejeződik ki. Számos program azonban a legkedvezőtlenebb pillanatban összeomlik. Miért?
A kivételmechanizmust olyan speciális, rendellenes vagy hibás helyzetek nyomon követésére és kezelésére használják, amelyek a modern operációs rendszerek ellenőrzése alatt jelentkeznek a számítógépes programok működése során. Kivételt képezhetnek a hardver (a processzor által dobott) és a szoftver (maga az alkalmazás vagy valamilyen plug-in külső komponens dobhatja).
Típustól függetlenül a kivétel kifogható és helyesen kezelhető. A be nem fogott kivételek a root futásidejű könyvtárkezelőhöz vagy az operációs rendszer által telepített kezelőhöz kerülnek. Ha ez megtörténik, a program összeomlik egy üzenettel vagy egy rendellenes befejező ablakkal (Windows rendszerben). Ha az operációs rendszer kezelője nem működött (például szándékosan eltávolították), akkor a program "csendesen összeomlik". Így a programok nem kezelhető kivételek miatt összeomlanak. A kivételek előfordulásának okai különbözőek.
Az esetek elsöprő többségében a programok saját kódjuk végrehajtása miatt összeomlanak, amelyek kifejezett vagy hallgatólagos végrehajtási hibákat tartalmaznak. A vészhelyzetek lehetséges okainak felsorolása nagyon hosszú. Ezek mind a lebegőpontos számok műveleteinek klasszikus hibái (például 0-val osztás), mind a memóriával való munka hibái (olvasás vagy írás a folyamat címterén kívül, hozzáférés védett oldalakhoz, írás csak olvasható memóriaterületre), túlcsorduló verem a végtelen rekurzió miatt stb. Ezekben az esetekben hardveres vagy operációs rendszerekkel kapcsolatos kivételeket dobnak el.
Az implicit hibák közé tartoznak a bemeneti adatok elégtelen szűrésének, a mutatóértékek érvényesítésének hiánya és még sok más. Az ilyen hiányosságok csak bizonyos esetekben vezetnek kivételes helyzetekhez.
A megvalósítási hibák megtalálhatók az alkalmazás által használt külső komponensekben is. Például a szükséges funkciókat biztosító dinamikus könyvtárakban vagy kiegészítő modulokban. Az a programkód, amely implicit módon be van töltve egy folyamat címterébe (például bizonyos API-funkciók elfogása érdekében), szintén a program összeomlását okozhatja.
Számos összetevő és könyvtár (például az ADO Windows rendszeren) az automatizált kivétel mechanizmusát használja prioritásként a hibák jelentésében. A kivételeknek az ilyen típusú alkalmazások hiánya vagy hiányos kezelése teljesen ártalmatlan helyzetekben (például az adatbázishoz való kapcsolat elvesztése esetén) összeomlásához vezethet.