Espacios de nombres
Variantes
Acciones

std::bad_exception

De cppreference.com
< cpp‎ | error
 
 
Biblioteca de servicios
 
Control de errores
Control de excepciones
Fallas del control de excepciones
bad_exception
(hasta C++17)
(hasta C++17)
(C++11)(hasta C++17)
(hasta C++17)
Códigos de error
Códigos de error
 
 
Definido en el archivo de encabezado <exception>
class bad_exception;

std::bad_exception es el tipo de la excepción lanzada en tiempo de ejecución por C++ en las siguientes situaciones:

1) Si std::exception_ptr almacena una copia de la excepción atrapada y si el constructor de copia del objeto de excepción atrapado por std::current_exception lanza una excepción, la excepción capturada es una instancia de std::bad_exception.
2) Si se viola una especificación de excepción dinámica y std::unexpected lanza o vuelve a lanzar una excepción que todavía viola la especificación de excepción, pero la especificación de excepción permite std::bad_exception, entonces se lanza std::bad_exception.
(hasta C++17)
cpp/error/exceptionstd-bad exception-inheritance.svg
Acerca de esta imagen

Inheritance diagram

Contenido

[editar] Funciones miembro

Construye el objeto bad_exception.
(función miembro pública)
Copia el objeto.
(función miembro pública)
[virtual]
Devuelve una cadena aclaratoria.
(función miembro virtual pública)

Heredado de std::exception

Funciones miembro

[virtual]
Destruye el objeto excepción.
(función miembro virtual pública de std::exception) [editar]
[virtual]
Devuelve una cadena aclaratoria.
(función miembro virtual pública de std::exception) [editar]

[editar] Ejemplo

#include <iostream>
#include <exception>
#include <stdexcept>
 
void my_unexp() { throw; }
 
void test() throw(std::bad_exception)
{
    throw std::runtime_error("test");
}
 
int main()
{
    std::set_unexpected(my_unexp);
    try {
         test();
    } catch(const std::bad_exception& e)
    {
        std::cerr << "Se ha atrapado " << e.what() << '\n';
    }
}

Salida:

Se ha atrapado std::bad_exception