FreeBSD Manual Pages
std::rethrow_exception(3) C++ Standard Libary std::rethrow_exception(3) 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, or a copy of that object. It is unspecified whether a copy is made. If a copy is made, the storage for it is allocated in an unspecified way. The behavior is undefined if p is null. Parameters p - non-null std::exception_ptr Return value (none) Exceptions The exception object referred-to by p if no copy is made. Otherwise, a copy of such exception object if the implementation successfully copied the exception object. Otherwise, std::bad_alloc or the exception thrown when copying the exception object, if allocation or copying fails, respectively. Notes Before P1675R2, rethrow_exception was not allowed to copy the excep- tion object, which is unimplementable on some platforms where exception objects are allocated on the stack. 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 Possible output: Caught exception "basic_string::at" See also exception_ptr shared pointer type for handling exception objects (C++11) (typedef) current_exception captures the current exception in a std::excep- tion_ptr (C++11) (function) http://cppreference.com 2022.07.31 std::rethrow_exception(3)
NAME | Synopsis | Parameters | Return value | Exceptions | Notes | Example | Possible output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::rethrow_exception&sektion=3&manpath=FreeBSD+Ports+15.0>
