Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

Pisanie programu do obsługi wyjątku

Obsługa wyjątków strukturalnych (C/C++)