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