Compartir a través de


Función RaiseException (errhandlingapi.h)

Genera una excepción en el subproceso que llama.

Sintaxis

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

Parámetros

[in] dwExceptionCode

Código de excepción definido por la aplicación de la excepción que se está generando. La expresión de filtro y el bloque del controlador de excepciones de un controlador de excepciones pueden usar la función GetExceptionCode para recuperar este valor.

Tenga en cuenta que el sistema borrará el bit 28 de dwExceptionCode antes de mostrar un mensaje Este bit es un bit de excepción reservado, usado por el sistema para sus propios fines.

[in] dwExceptionFlags

Marcas de excepción. Puede ser cero para indicar una excepción continuable o EXCEPTION_NONCONTINUABLE para indicar una excepción no continuable. Cualquier intento de continuar la ejecución después de una excepción no continua provoca la excepción EXCEPTION_NONCONTINUABLE_EXCEPTION.

[in] nNumberOfArguments

Número de argumentos de la matriz lpArguments . Este valor no debe superar EXCEPTION_MAXIMUM_PARAMETERS. Este parámetro se omite si lpArguments es NULL.

[in] lpArguments

Matriz de argumentos. Este parámetro puede ser NULL. Estos argumentos pueden contener cualquier dato definido por la aplicación que deba pasarse a la expresión de filtro del controlador de excepciones.

Valor devuelto

Esta función no devuelve ningún valor.

Observaciones

La función RaiseException permite que un proceso use el control estructurado de excepciones para controlar excepciones privadas, generadas por software y definidas por la aplicación.

Generar una excepción hace que el distribuidor de excepciones pase por la siguiente búsqueda de un controlador de excepciones:

  1. El sistema primero intenta notificar al depurador del proceso, si existe.
  2. Si el proceso no se está depurando o si el depurador asociado no controla la excepción, el sistema intenta buscar un controlador de excepciones basado en el marco buscando los marcos de pila del subproceso en el que se produjo la excepción. El sistema busca primero el marco de pila actual y, a continuación, avanza hacia atrás a través de marcos de pila anteriores.
  3. Si no se encuentra ningún controlador basado en fotogramas o no se controla la excepción, el sistema realiza un segundo intento de notificar al depurador del proceso.
  4. Si el proceso no se está depurando o si el depurador asociado no controla la excepción, el sistema proporciona un control predeterminado basado en el tipo de excepción. Para la mayoría de las excepciones, la acción predeterminada es llamar a la función ExitProcess.

Los valores especificados en los parámetros dwExceptionCode, dwExceptionFlags, nNumberOfArguments y lpArguments se pueden recuperar en la expresión de filtro de un controlador de excepciones basado en fotogramas llamando a la función GetExceptionInformation . Un depurador puede recuperar estos valores llamando a la función WaitForDebugEvent .

Ejemplos

Para obtener un ejemplo, consulte Uso de un controlador de excepciones.

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado errhandlingapi.h (incluir Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

ExitProcess

GetExceptionCode

GetExceptionInformation

Funciones del control de excepciones estructurado

Información general del control de excepciones estructurado

WaitForDebugEvent

API de Vertdll disponibles en enclaves de VBS