std::rethrow_exception (3) - Linux Manuals

std::rethrow_exception: std::rethrow_exception

NAME

std::rethrow_exception - std::rethrow_exception

Synopsis


Defined in header <exception>
[[noreturn]] void rethrow_exception( std::exception_ptr p ) (since C++11)


Throws the previously captured exception object, referred to by the exception pointer p.

Parameters


p - non-null std::exception_ptr

Return value


(none)

Example


// Run this code


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


  void handle_eptr(std::exception_ptr eptr) // passing by value is ok
  {
      try {
          if (eptr) {
              std::rethrow_exception(eptr);
          }
      } catch(const std::exception& e) {
          std::cout << "Caught exception \"" << e.what() << "\"\n";
      }
  }


  int main()
  {
      std::exception_ptr eptr;
      try {
          std::string().at(1); // this generates an std::out_of_range
      } catch(...) {
          eptr = std::current_exception(); // capture
      }
      handle_eptr(eptr);
  } // destructor for std::out_of_range called here, when the eptr is destructed

Output:


  Caught exception "basic_string::at"

See also


exception_ptr shared pointer type for handling exception objects
                  (typedef)
(C++11)


current_exception captures the current exception in a std::exception_ptr
                  (function)
(C++11)