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:
- El sistema primero intenta notificar al depurador del proceso, si existe.
- 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.
- 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.
- 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
Funciones del control de excepciones estructurado