Wyjątek
Z Wikipedii
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.
Zobacz hasło: 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:
- 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
- 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 jest aż do napotkania kontekstu zawierającego kod obsługi dla danego wyjątku
- 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: