std::bad_exception (3) - Linux Manuals

std::bad_exception: std::bad_exception

NAME

std::bad_exception - std::bad_exception

Synopsis


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)
[virtual]


Inherited from std::exception

Member functions


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


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

Example


// 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()
  {
      std::set_unexpected(my_unexp);
      try {
           test();
      } catch(const std::bad_exception& e)
      {
          std::cerr << "Caught " << e.what() << '\n';
      }
  }

Output:


  Caught std::bad_exception