Namespaces
Variants

std:: unexpected

From cppreference.net
Definido en el encabezado <exception>
void unexpected ( ) ;
(hasta C++11)
[ [ noreturn ] ] void unexpected ( ) ;
(obsoleto en C++11)
(eliminado en C++17)

std::unexpected() es llamado por el runtime de C++ cuando se viola una especificación de excepción dinámica : se lanza una excepción desde una función cuya especificación de excepción prohíbe excepciones de este tipo.

std::unexpected() también puede ser llamado directamente desde el programa.

En cualquier caso, std::unexpected llama al std::unexpected_handler actualmente instalado. El std::unexpected_handler predeterminado llama a std::terminate .

Si un destructor restablece el manejador de excepciones inesperadas durante el desenrollado de pila y el desenrollado posterior condujo a que se llamara a unexpected , el manejador que se instaló al final de la expresión throw es el que se llamará (nota: era ambiguo si el relanzamiento aplicaba los nuevos manejadores).

(until C++11)

Si un destructor restablece el manejador de excepciones inesperadas durante el desenrollado de pila, no está especificado qué manejador se llama si el desenrollado posterior condujo a que se llamara a unexpected .

(since C++11)

Excepciones

Lanza cualquier excepción lanzada por el std::unexpected_handler actualmente instalado.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2111 C++11 el efecto de llamar std::set_unexpected durante el desenrollado de pila
difiere de C++98 y rompe algunas ABIs
se hizo no especificado

Véase también

(C++23)
representado como un valor inesperado
(plantilla de clase)
(obsoleto en C++11) (eliminado en C++17)
el tipo de la función llamada por std::unexpected
(typedef)