Espacios de nombres
Variantes
Acciones

std::bad_exception

De cppreference.com
< cpp‎ | error
 
 
Biblioteca de servicios
 
 
 
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){throwstd::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
close