C++: exception_ptr
개요
- current_exception으로 던져지고 캡쳐된 예외 객체를 관리하는 포인터
- 다른 함수로 전달되거나 다시 throw 가능
예제
- 코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
exception_ptr ex;
try {
vector<int>().at(0);
} catch (...) {
ex = current_exception();
}
auto func = [](exception_ptr ex) {
if (ex) {
try {
rethrow_exception(ex);
} catch (const exception &e) {
cout << e.what() << endl;
}
}
};
func(ex);
return 0;
}
- 실행 결과
vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)