set_unexpected
(CRT)
Instala la función de finalización a la que debe llamar unexpected
.
Sintaxis
unexpected_function set_unexpected( unexpected_function unexpFunction );
Parámetros
unexpFunction
Puntero a una función que se escribe para reemplazar la función unexpected
.
Valor devuelto
Devuelve un puntero a la función de finalización anterior registrada por _set_unexpected
para que después se pueda restaurar dicha función. Si no se ha establecido ninguna función anterior, el valor devuelto se puede usar para restaurar el comportamiento predeterminado; este valor puede ser NULL
.
Comentarios
La función set_unexpected
instala unexpFunction
como la función llamada por unexpected
. unexpected
no se usa en la implementación actual del control de excepciones de C++. El tipo unexpected_function
se define en EH.H como puntero a una función inesperada definida por el usuario, unexpFunction
que devuelve void
. La función personalizada unexpFunction
no debe volver a su autor de llamada.
typedef void ( *unexpected_function )( );
De forma predeterminada, unexpected
llama a terminate
. Puede cambiar este comportamiento predeterminado si escribe su propia función de finalización y llama a set_unexpected
con el nombre de esta función como argumento. unexpected
llama a la última función especificada como argumento para set_unexpected
.
A diferencia de la función de terminación personalizada instalada mediante una llamada a set_terminate
, se puede producir una excepción desde unexpFunction
.
En un entorno multiproceso, las funciones inesperadas se mantienen por separado para cada subproceso. Cada subproceso nuevo debe instalar su propia función inesperada. Por lo tanto, cada subproceso se encarga de su propio control inesperado.
En la implementación actual de Microsoft sobre el control de excepciones de C++, unexpected
llama a terminate
de forma predeterminada; la biblioteca de tiempo de ejecución del control de excepciones nunca la llama. No hay ninguna ventaja particular para llamar unexpected
a en lugar de terminate
.
Hay un único set_unexpected
controlador para todos los archivos DLL o EXE vinculados dinámicamente; incluso si llama a set_unexpected
su controlador puede reemplazarse por otro o que va a reemplazar un controlador establecido por otro archivo DLL o EXE.
Requisitos
Routine | Encabezado necesario |
---|---|
set_unexpected |
<eh.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Consulte también
Rutinas de control de excepciones
abort
_get_unexpected
set_terminate
terminate
unexpected