Updated:

less than 1 minute read

개요

  • 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)