Поделиться через


Обработка исключений (обработка ошибок)

Исключения могут быть инициированы оборудованием или программным обеспечением и могут возникать в режиме ядра, а также в коде пользовательского режима. Структурированная обработка исключений предоставляет единый механизм обработки исключений в режиме ядра и пользовательском режиме.

Выполнение определенных последовательностей инструкций может привести к исключениям, инициируемым оборудованием. Например, нарушение доступа создается оборудованием, когда процесс пытается считывать или записывать данные на виртуальный адрес, к которому у него нет соответствующего доступа.

События, требующие обработки исключений, также могут возникать во время выполнения подпрограммы программного обеспечения (например, при указании недопустимого значения параметра). В этом случае поток может явно инициировать исключение, вызвав функцию RaiseException. Эта функция позволяет вызывающей потоку указывать сведения, описывающие исключение.

Исключение может быть континуируемым или неконтинуируемым. Неконтинуируемое исключение возникает, если событие не является континуируемым в оборудовании или если продолжение не имеет смысла. Неконтинуируемое исключение не завершает работу приложения. Таким образом, приложение может поймать исключение и запустить его. Однако неконтинуируемое исключение обычно возникает в результате поврежденного стека или другой серьезной проблемы, что затрудняет восстановление после исключения.