std::bad_exception
De cppreference.com
| 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) |
Inheritance diagram
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)
|
[virtual] |
Devuelve una cadena aclaratoria. (función miembro virtual pública de std::exception)
|
Ejemplo
Ejecuta este código
#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