std::bad_exception (3) - Linux Manuals

std::bad_exception: std::bad_exception


std::bad_exception - std::bad_exception


Defined in header <exception>
class bad_exception;

std::bad_exception is the type of the exception thrown by the C++ runtime in the following situations:
1) If std::exception_ptr stores a copy of the caught exception and if the copy constructor of the exception object caught by std::current_exception throws an exception, the captured exception is an instance of std::bad_exception.

2) If a dynamic_exception_specification is violated and std::unexpected throws or rethrows an exception that still violates the exception specification, but the exception specification allows std::bad_exception, std::bad_exception is thrown. (until C++17)

 std-bad exception-inheritance.svg
Inheritance diagram

Member functions

              constructs the bad_exception object
constructor (public member function)
              copies the object
operator= (public member function)

what returns the explanatory string
              (virtual public member function)

Inherited from std::exception

Member functions

destructor destroys the exception object
             (virtual public member function of std::exception)

what returns an explanatory string
             (virtual public member function of std::exception)


// Run this code

  #include <iostream>
  #include <exception>
  #include <stdexcept>

  void my_unexp() { throw; }

  void test() throw(std::bad_exception)
      throw std::runtime_error("test");

  int main()
      try {
      } catch(const std::bad_exception& e)
          std::cerr << "Caught " << e.what() << '\n';


  Caught std::bad_exception