Wyjątek to mechanizm kontroli przepływu występujący w mikroprocesorach oraz we współczesnych językach programowania służący do obsługi zdarzeń wyjątkowych, a w szczególności sytuacji błędnych.

Wyjątki (ang. exception) w mikroprocesorach można podzielić na kilka podstawowych rodzajów:

  • niepowodzenia (ang. fault)
  • błędy nienaprawialne (ang. abort)
  • puÅ‚apki (ang. trap)

Przykładami zgłaszanych wyjątków są: dzielenie przez zero, dostęp do strony pamięci nie znajdującej się w pamięci RAM, itp. (zob. przerwanie).

Języki programowania wspierające mechanizm wyjątków, umożliwiają zdefiniowanie w jakim fragmencie kodu może powstać wyjątek, oraz jak wyjątek obsłużyć jeśli zostanie zgłoszony. Zgłoszenie sytuacji wyjątkowej jest możliwe w każdym miejscu kodu. Zgłoszenie to nazywane jest czasem podniesieniem (ang. raise) wyjątku lub rzuceniem (ang. throw) wyjątku. Poniżej przykładowy program w języku Python:

a = b + c
d = c * e
try:           # z ang. spróbuj
    z = a/d    # podzielić
except ZeroDivisionError: # złap (ang. catch) wyjątek dzielenia przez zero
 
    print "dzielenie przez zero"
    raise Exception("Poważny błąd")  # zgłoś nowy wyjątek

W innych językach programowania struktura kodu jest podobna. Np. w C++ też jest blok try, zamiast except jest catch, a zamiast raise throw.

Mechanizm wyjątków składa się z trzech ważnych części:

  1. musimy mieć możliwość przechwytywania wyjątków - pewien blok kodu zostaje oznaczony (instrukcją try) jako kontrolowany na wystąpienie danego wyjątku, i jeśli w trakcie jego uruchomienia zostanie podniesiony wyjątek uruchamia się nasz kod go obsługujący
  2. musimy mieć możliwość podnoszenia wyjątków (raise, throw) - mechanizm ten przerywa wykonywanie bieżącej funkcji (bloku) i przekazuje podniesiony wyjątek do kontekstu, który tę funkcję wywołał. Proces ten jest powtarzany aż do napotkania kontekstu zawierającego kod obsługi dla danego wyjątku
  3. musimy mieć możliwość wykonywania pewnych operacji w trakcie tego przelotu - żeby zamknąć pewne pliki, itd. Bez tego mechanizm wyjątków traci wiele sensu - musimy przechwytywać i podnosić ponownie wiele wyjątków o których nic nie wiemy.

Mechanizm wyjątków posiadają m.in. następujące języki:

Wikicytaty
Zobacz w Wikicytatach kolekcję cytatów
o WyjÄ…tku