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


Функция RaiseException (errhandlingapi.h)

Вызывает исключение в вызывающем потоке.

Синтаксис

void RaiseException(
  [in] DWORD           dwExceptionCode,
  [in] DWORD           dwExceptionFlags,
  [in] DWORD           nNumberOfArguments,
  [in] const ULONG_PTR *lpArguments
);

Параметры

[in] dwExceptionCode

Определяемый приложением код исключения вызываемого исключения. Выражение фильтра и блок обработчика исключений обработчика исключений могут использовать функцию GetExceptionCode для получения этого значения.

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

[in] dwExceptionFlags

Флаги исключений. Это может быть либо ноль, чтобы указать непрерывное исключение, либо EXCEPTION_NONCONTINUABLE, чтобы указать непреобразуемое исключение. Любая попытка продолжить выполнение после неразрывного исключения вызывает исключение EXCEPTION_NONCONTINUABLE_EXCEPTION.

[in] nNumberOfArguments

Число аргументов в массиве lpArguments . Это значение не должно превышать EXCEPTION_MAXIMUM_PARAMETERS. Этот параметр игнорируется, если lpArguments имеет значение NULL.

[in] lpArguments

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

Возвращаемое значение

Эта функция не возвращает значение.

Комментарии

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

Вызов исключения приводит к тому, что диспетчер исключений выполняет следующий поиск обработчика исключений:

  1. Система сначала пытается уведомить отладчик процесса, если таковой есть.
  2. Если процесс не выполняет отладку или связанный отладчик не обрабатывает исключение, система пытается найти обработчик исключений на основе кадра, выполнив поиск в кадрах стека потока, в котором возникло исключение. Система сначала выполняет поиск по текущему кадру стека, а затем переходит назад по предыдущим кадрам стека.
  3. Если обработчик на основе кадра не найден или не обрабатывает исключение, система предпринимает вторую попытку уведомить отладчик процесса.
  4. Если процесс не выполняется отладка или связанный отладчик не обрабатывает исключение, система обеспечивает обработку по умолчанию на основе типа исключения. Для большинства исключений действием по умолчанию является вызов функции ExitProcess .

Значения, указанные в параметрах dwExceptionCode, dwExceptionFlags, nNumberOfArguments и lpArguments , можно получить в выражении фильтра обработчика исключений на основе кадра путем вызова функции GetExceptionInformation . Отладчик может получить эти значения, вызвав функцию WaitForDebugEvent .

Примеры

Пример см. в разделе Использование обработчика исключений.

Требования

   
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header errhandlingapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

ExitProcess

GetExceptionCode

GetExceptionInformation

Структурированные функции обработки исключений

Общие сведения о структурированной обработке исключений

WaitForDebugEvent

API-интерфейсы Vertdll, доступные в анклавах VBS