Namespaces
Variants

std::unexpected

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

std::unexpected() es llamado por el tiempo de ejecución de C++ cuando una especificación dinámica de excepciones es violada: se lanza una excepción desde una función cuya especificación de excepciones 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. El std::unexpected_handler llama a std::terminate.

Si un destructor restableció el manejador inesperado durante el desenrollado de la pila y el desenrollado luego llevó a unexpected ser llamado, el manejador que fue instalado al final de la expresión de lanzamiento es el que será llamado (nota: era ambiguo si relanzar aplicaba los nuevos manejadores).

(hasta C++11)

Si un destructor restableció el manejador inesperado durante el desenrollado de la pila, no se especifica qué manejador se llama si el desenrollado luego llevó a unexpected ser llamado.

(desde 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)