Wyjątkiem są nietypowe warunki, które wymagają odchylenia od normalnego przepływu programu. Zwykle wyjątek nie powinien skutkować całkowitą awarią, ale zamiast tego powinien być obsługiwany przez procedurę obsługi wyjątku. Obsługa wyjątków jest wbudowaną konstrukcją w wielu językach programowania. Zwykle wyjątki są obsługiwane przez odwijanie stosu, a tym samym przywracanie do określonego stanu poza zakresem wyjątku, a następnie wywoływanie bloku lub procedury obsługi.