1、产生std::exception_ptr的方式:
std::exception_ptr ptr = nullptr; //用来保存异常信息
try{
test();
}catch(...){
std::exception_ptr ptr = std::current_exception(); //这是exeception_ptr产生的地方
}
或
std::exception_ptr ptr2 = std::make_exception_ptr(std::runtime_error("另一个异常")); //也可以产生异常指针
2、获取std::exception_ptr指向的异常信息
try{
rethrow_exception(ptr2);
}
catch(const exception& e){
cout << e.what() << endl;
}
3、完整示例
#include<exception>
#include <string>
#include <iostream>
using namespace std;
void test(){
throw std::runtime_error("测试而已");
}
int main(){
std::exception_ptr ptr = nullptr; //用来保存异常信息
try{
test();
}catch(...){
std::exception_ptr ptr = std::current_exception(); //这是exeception_ptr产生的地方
}
std::exception_ptr ptr2 = std::make_exception_ptr(std::runtime_error("另一个异常")); //也可以产生异常指针
try{
rethrow_exception(ptr2);
}
catch(const exception& e){
cout << e.what() << endl;
}
return 0;
}
标签:std,exception,ptr2,catch,异常,ptr
From: https://blog.csdn.net/qq_33271629/article/details/137164542