std::rethrow_exception
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <exception> 中定义
|
||
[[noreturn]] void rethrow_exception( std::exception_ptr p ) |
(C++11 起) | |
先前捕获的异常对象抛出的异常指针
p
,简称.原文:
Throws the previously captured exception object, referred to by the exception pointer
p
.目录 |
[编辑] 参数
p | - | 非空std::exception_ptr
|
[编辑] 返回值
(无)
[编辑] 示例
#include <iostream> #include <string> #include <exception> #include <stdexcept> void handle_eptr(std::exception_ptr eptr) // passing by value is ok { try { if (eptr != std::exception_ptr()) { 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
输出:
Caught exception "basic_string::at"
[编辑] 另请参阅
(C++11) |
处理异常对象的共享指针类型 原文: shared pointer type for handling exception objects (typedef) |
(C++11) |
captures the current exception in a std::exception_ptr (函数) |