最終更新日時: 2026年05月18日 17時46分06秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<exception>

# std::nested_exception::rethrow_nested(C++11)

    [[noreturn]] void rethrow_nested() const; // (1) C++11

## 概要

入れ子になった例外を送出する

## 効果

`nested_ptr()`メンバ関数がヌルポインタを返した場合、`std::terminate()`を呼び出してプログラムを終了させる。そうでなければ、`nested_ptr()`によって返された例外を送出する。

## 戻り値

この関数は決して返らない

## 例外

入れ子になった例外を送出する

## 例

    #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)を送出
          e.rethrow_nested();
        }
      }
      catch (int& x) {
        std::cout << "3rd caught: " << x << std::endl;
      }
    }

### 出力

    1st caught: 1
    2nd caught: my_exception(nested_exception).
    3rd caught: 1

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2015 ✅

## 関連項目

- C++26 定数評価での例外送出を許可

## 参照

- P3842R2 A conservative fix for constexpr `uncaught_exceptions()` and `current_exception()`
  - C++26の策定中に`constexpr`が追加されたが、本提案文書により巻き戻された (C++29で再検討予定)