- exception[meta header]
- std[meta namespace]
- nested_exception[meta class]
- function[meta id-type]
- cpp11[meta cpp]
exception_ptr nested_ptr() const noexcept; // (1) C++11
constexpr exception_ptr nested_ptr() const noexcept; // (1) C++26
- exception_ptr[link /reference/exception/exception_ptr.md]
入れ子になった例外へのポインタを取得する
メンバとして保持している、入れ子になった例外へのポインタを返す。
投げない
#include <exception>
#include <iostream>
class my_exception : public std::nested_exception {};
int main()
{
try {
try {
try {
throw 1; // int値を送出
}
catch (int& x) {
std::cout << "1st caught: " << x << std::endl;
throw my_exception(); // 現在の例外(int)を入れ子にしてmy_exceptionを送出
}
}
catch (my_exception& e) {
std::cout << "2nd caught: my_exception(nested_exception)." << std::endl;
// 入れ子になっている例外(int)を送出
std::rethrow_exception(e.nested_ptr());
}
}
catch (int& x) {
std::cout << "3rd caught: " << x << std::endl;
}
}
- nested_ptr()[color ff0000]
- std::rethrow_exception[link /reference/exception/rethrow_exception.md]
1st caught: 1
2nd caught: my_exception(nested_exception).
3rd caught: 1
- C++11
- Clang: ??
- GCC: 4.7.0 [mark verified]
- ICC: ??
- Visual C++: 2015 [mark verified]