Wyjątki sprzętowe
Do większości standardowych wyjątków rozpoznawanych przez system operacyjny należą wyjątki zdefiniowane przez sprzęt.System Windows rozpoznaje kilka wyjątków oprogramowania niskiego poziomu, ale te są zazwyczaj najlepiej obsługiwane przez system operacyjny.
System Windows mapuje błędy sprzętowe różnych procesorów na kody wyjątków w tej sekcji.W niektórych przypadkach procesor może wygenerować tylko podzbiór tych wyjątków.System Windows wstępnie przetwarza informacje dotyczące wyjątku i zgłasza odpowiedni kod wyjątku.
Wyjątki sprzętowe rozpoznawane przez system Windows są podsumowane w tabeli poniżej:
Kod wyjątku |
Przyczyna wyjątku |
---|---|
STATUS_ACCESS_VIOLATION |
Odczyt lub zapis do niedostępnej lokalizacji pamięci. |
STATUS_BREAKPOINT |
Napotkanie punktu przerwania zdefiniowanego przez sprzęt; używane tylko przez debugery. |
STATUS_DATATYPE_MISALIGNMENT |
Odczyt lub zapis danych na adres, który jest nieodpowiednio wyrównany; na przykład jednostki 16-bitowe muszą być wyrównane do 2-bajtowych granic. (Nie ma zastosowania dla procesorów Intel 80x86). |
STATUS_FLOAT_DIVIDE_BY_ZERO |
Dzielenie liczb typu zmiennoprzecinkowego przez 0.0. |
STATUS_FLOAT_OVERFLOW |
Przekroczenie maksymalnego dodatniego wykładnika typu zmiennoprzecinkowego. |
STATUS_FLOAT_UNDERFLOW |
Przekroczenie wielkości najmniejszego ujemnego wykładnika typu zmiennoprzecinkowego. |
STATUS_FLOATING_RESEVERED_OPERAND |
Użycie zastrzeżonego formatu zmiennoprzecinkowego (nieprawidłowe użycie formatu). |
STATUS_ILLEGAL_INSTRUCTION |
Podjęcie próby wykonania kodu instrukcji nie zdefiniowanej przez procesor. |
STATUS_PRIVILEGED_INSTRUCTION |
Wykonywanie instrukcji nie dozwolonej w bieżącym trybie komputera. |
STATUS_INTEGER_DIVIDE_BY_ZERO |
Dzielenie liczby całkowitej przez 0. |
STATUS_INTEGER_OVERFLOW |
Podjęcie próby wykonania operacji, która wykracza poza zakres liczby całkowitej. |
STATUS_SINGLE_STEP |
Wykonywanie pojedynczej instrukcji w trybie pracy krokowej; używane tylko przez debugery. |
Wiele wyjątków wymienionych w powyższej tabeli jest przeznaczonych do obsługi przez debugery, system operacyjny lub inny kod niskiego poziomu.Z wyjątkiem błędów liczb całkowitych i zmiennoprzecinkowych, nie należy obsługiwać tych błędów w kodzie.Tak więc należy zazwyczaj korzystać z filtru obsługi wyjątków do ignorowania wyjątków (obliczania do 0).W przeciwnym razie można uniemożliwić prawidłową odpowiedź mechanizmom niskiego poziomu.Można jednakże podjąć odpowiednie środki ostrożności przeciwko potencjalnemu wpływowi na te błędy niskiego poziomu, pisząc programy obsługi zakończenia.