Информация из MSDN: здесь
Исключения аналогичны прерываниям, обрабатываемым ЦП. При возникновении исключения, будь то программное или аппаратное обеспечение, ваш процессор останавливает выполнение и передает управление системе. Система сохраняет текущее состояние потока и информацию об исключении. Затем он пытается найти обработчик. По сути, это то, как это "поймано".
Порядок поиска обработчика:
- Отладчик прилагается к программе
- Найти обработчик исключений на основе фреймов (зависит от языка)
- Спросите отладчик снова
- Если он не отлажен или отладчик не обрабатывает исключение, ОС предоставит обработку по умолчанию. Для большинства исключений действием по умолчанию является вызов ExitProcess.
Если его код режима ядра (Операционная система), то он пытается найти обработчик исключений. Если его нет или тот, который доступен, не обрабатывает это конкретное исключение, вызывается функция ExitWindows. Домовой указывает, если вы можете догадаться, что это делает.
Другими словами, это ваш высокоуровневый язык, который имеет дело с исключениями, ОС просто предоставляет последний вариант.