RaiseException 함수(errhandlingapi.h)

호출 스레드에서 예외를 발생시킵니다.

구문

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

매개 변수

[in] dwExceptionCode

발생 중인 예외의 애플리케이션 정의 예외 코드입니다. 예외 처리기의 필터 식 및 예외 처리기 블록은 GetExceptionCode 함수를 사용하여 이 값을 검색할 수 있습니다.

시스템에서 메시지를 표시하기 전에 dwExceptionCode 의 비트 28을 지웁니다. 이 비트는 시스템에서 자체 용도로 사용하는 예약된 예외 비트입니다.

[in] dwExceptionFlags

예외 플래그입니다. 연속 가능한 예외를 나타내는 0이거나, 연결할 수 없는 예외를 나타내는 EXCEPTION_NONCONTINUABLE 수 있습니다. 연결할 수 없는 예외 후 실행을 계속하려고 하면 EXCEPTION_NONCONTINUABLE_EXCEPTION 예외가 발생합니다.

[in] nNumberOfArguments

lpArguments 배열의 인수 수입니다. 이 값은 EXCEPTION_MAXIMUM_PARAMETERS 초과해서는 안됩니다. lpArgumentsNULL인 경우 이 매개 변수는 무시됩니다.

[in] lpArguments

인수의 배열입니다. 이 매개 변수는 NULL일 수 있습니다. 이러한 인수는 예외 처리기의 필터 식에 전달되어야 하는 애플리케이션 정의 데이터를 포함할 수 있습니다.

반환 값

이 함수는 값을 반환하지 않습니다.

설명

RaiseException 함수를 사용하면 프로세스에서 구조적 예외 처리를 사용하여 소프트웨어에서 생성된 프라이빗 애플리케이션 정의 예외를 처리할 수 있습니다.

예외를 발생하면 예외 디스패처가 예외 처리기에 대한 다음 검색을 진행합니다.

  1. 시스템은 먼저 프로세스의 디버거(있는 경우)를 알리려고 시도합니다.
  2. 프로세스가 디버그되지 않거나 연결된 디버거가 예외를 처리하지 않는 경우 시스템은 예외가 발생한 스레드의 스택 프레임을 검색하여 프레임 기반 예외 처리기를 찾으려고 시도합니다. 시스템은 먼저 현재 스택 프레임을 검색한 다음 이전 스택 프레임을 통해 뒤로 진행합니다.
  3. 프레임 기반 처리기를 찾을 수 없거나 프레임 기반 처리기가 예외를 처리하지 않는 경우 시스템은 프로세스의 디버거에 알리기 위해 두 번째 시도를 합니다.
  4. 프로세스가 디버그되지 않거나 연결된 디버거가 예외를 처리하지 않는 경우 시스템은 예외 유형에 따라 기본 처리를 제공합니다. 대부분의 예외에서 기본 작업은 ExitProcess 함수를 호출하는 것입니다.

dwExceptionCode, dwExceptionFlags, nNumberOfArgumentslpArguments 매개 변수에 지정된 값은 GetExceptionInformation 함수를 호출하여 프레임 기반 예외 처리기의 필터 식에서 검색할 수 있습니다. 디버거는 WaitForDebugEvent 함수를 호출하여 이러한 값을 검색할 수 있습니다.

예제

예를 보려면 예외 처리기 사용을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 errhandlingapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

ExitProcess

GetExceptionCode

GetExceptionInformation

구조적 예외 처리 함수

구조적 예외 처리 개요

WaitForDebugEvent

VBS Enclave에서 사용할 수 있는 Vertdll API