1

В языках программирования высокого уровня (например, Java) у вас есть концепция исключений.

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

Теперь мне интересно: что там происходит под капотом?

Что является исключением для операционной системы?

Как "ловится" исключение?

1 ответ1

1

Информация из MSDN: здесь

Исключения аналогичны прерываниям, обрабатываемым ЦП. При возникновении исключения, будь то программное или аппаратное обеспечение, ваш процессор останавливает выполнение и передает управление системе. Система сохраняет текущее состояние потока и информацию об исключении. Затем он пытается найти обработчик. По сути, это то, как это "поймано".

Порядок поиска обработчика:

  • Отладчик прилагается к программе
  • Найти обработчик исключений на основе фреймов (зависит от языка)
  • Спросите отладчик снова
  • Если он не отлажен или отладчик не обрабатывает исключение, ОС предоставит обработку по умолчанию. Для большинства исключений действием по умолчанию является вызов ExitProcess.

Если его код режима ядра (Операционная система), то он пытается найти обработчик исключений. Если его нет или тот, который доступен, не обрабатывает это конкретное исключение, вызывается функция ExitWindows. Домовой указывает, если вы можете догадаться, что это делает.

Другими словами, это ваш высокоуровневый язык, который имеет дело с исключениями, ОС просто предоставляет последний вариант.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .