Mangfoldet av oppgaver som løses i dag ved hjelp av personlige datamaskiner er gitt av eksistensen av et stort sett med applikasjonsprogrammer. Bekvemmeligheten med å jobbe med programvaren avhenger i stor grad av påliteligheten, som kommer til uttrykk i fravær av nødssituasjoner. Imidlertid krasjer mange programmer i det mest upassende øyeblikket. Hvorfor?
Unntaksmekanismen brukes til å spore og håndtere spesielle, unormale eller feilaktige situasjoner som oppstår under driften av dataprogrammer under kontroll av moderne operativsystemer. Unntak kan være maskinvare (kastet av prosessoren) og programvare (kastet av selve applikasjonen eller en plug-in ekstern komponent).
Uavhengig av type, kan unntaket fanges og håndteres riktig. Ufangede unntak går til rotkjøringsbiblioteksbehandleren eller en operativsysteminstallert behandler. Hvis dette skjer, krasjer programmet med en melding eller et unormalt avslutningsvindu (i Windows). Hvis operativsystembehandleren ikke fungerte (for eksempel ble den bevisst fjernet), krasjer programmet "stille". Dermed krasjer programmer på grunn av unntak som ikke kan håndteres. Årsakene til at unntak forekommer er forskjellige.
I det overveldende flertallet av tilfellene krasjer programmene på grunn av utførelsen av sin egen kode som inneholder eksplisitte eller implisitte implementeringsfeil. Listen over mulige årsaker til nødsituasjoner er veldig lang. Dette er både klassiske feil ved operasjoner på flytende punktum (for eksempel divisjon med 0), og feil i arbeidet med minne (lesing eller skriving utenfor prosessadresseområdet, tilgang til beskyttede sider, skriving til et skrivebeskyttet minneområde), overløpsstabel på grunn av uendelig rekursjon, etc. I disse tilfellene kastes unntak fra maskinvare eller unntak fra operativsystemer.
Implisitte feil inkluderer forskjellige tilfeller av utilstrekkelig filtrering av inndata, manglende validering av pekerverdier og mye mer. Slike mangler fører til eksepsjonelle situasjoner bare i visse tilfeller.
Implementeringsfeil kan også bli funnet i eksterne komponenter som brukes av applikasjonen. For eksempel i dynamiske biblioteker som gir den nødvendige funksjonaliteten eller tilleggsmoduler. Programkode som implisitt er lastet inn i adresserommet til en prosess (for eksempel for å avskjære visse API-funksjoner) kan også føre til at programmet krasjer.
Mange komponenter og biblioteker (for eksempel ADO på Windows) bruker den programmatiske unntaksmekanismen som en prioritet for rapportering av feil. Fraværet eller ufullstendig håndtering av unntak fra denne typen applikasjoner kan føre til at det krasjer selv i helt ufarlige situasjoner (for eksempel tap av forbindelse til databasen).