Do wyjątków asynchronicznych należą przerwania. Wyjątki synchroniczne - to pułapki (traps) i błędy (faults, aborts, errors).
Przerwania mogą być generowane sprzętowo przez sterowniki urządzeń zewnętrznych oraz - w nowocześniejszych architekturach (np. ARM) - programowo przez procesor.
Pułapki są generowane przez jednostkę wykonawczą procesora w wyniku wykonania instrukcji, na końcu jej wykonania. Pułapki służą do trzech celów: wywołania przez program użytkowy usług systemu operacyjnego - instrukcja SVC (ARM), INT (x86), SYSCALL (x86) itp. (pułapka wywołania systemu była dawniej niezbyt fortunnie nazywana "przerwaniem programowym") sygnalizacji niepoprawnego z punktu widzenia programisty wykonania programu (np. pułapka przy nadmiarze operacji arytmetycznej) wspomagania debugowania programów (pułapka śledzenia). Przy wystąpieniu pułapki wykonanie instrukcji, która ją spowodowała, zostaje normalnie zakończone.
Błędy mogą być generowane przez procesor lub jego otoczenie. Charakterystyczną cechą błędów jest to, że uniemożliwiają one zakończenie wykonania instrukcji, podczas której wystąpiły.