Namespaces
Variants

std:: unexpected_handler

From cppreference.net
Definido en el encabezado <exception>
typedef void ( * unexpected_handler ) ( ) ;
(obsoleto en C++11)
(eliminado en C++17)

std::unexpected_handler es el tipo de puntero a función (puntero a función que no toma argumentos y retorna void), que es instalado y consultado por las funciones std::set_unexpected y std::get_unexpected y llamado por std::unexpected .

La implementación de C++ proporciona una función predeterminada std::unexpected_handler , que llama a std::terminate() . Si se instala el valor de puntero nulo (mediante std::set_unexpected ), la implementación puede restaurar el manejador predeterminado en su lugar.

Un std::unexpected_handler definido por el usuario debe terminar el programa o lanzar una excepción. Si lanza una excepción, puede encontrarse una de las siguientes tres situaciones:

1) la excepción lanzada por std::unexpected_handler satisface la especificación de excepción dinámica que fue violada anteriormente. Se permite que la nueva excepción escape de la función y el desenrollado de pila continúa.

2) la excepción lanzada por std::unexpected_handler aún viola la especificación de excepciones:

2a) sin embargo, la especificación de excepción permite std::bad_exception : el objeto de excepción lanzado es destruido, y std::bad_exception es construido por el runtime de C++ y lanzado en su lugar.

2b) la especificación de excepción no permite std::bad_exception : std::terminate() es llamado.

Véase también

(deprecated in C++11) (removed in C++17)
función llamada cuando se viola la especificación de excepción dinámica
(función)
(deprecated in C++11) (removed in C++17)
cambia la función a ser llamada por std::unexpected
(función)
(deprecated in C++11) (removed in C++17)
obtiene el actual unexpected_handler
(función)