最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

class
<system_error>

# std::system_error(C++11)

    namespace std {
      class system_error : public runtime_error;
    }

## 概要

`system_error`クラスは、OSのエラーを表現する`error_code`クラスのオブジェクトを包含した例外クラスである。

## メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`system_error(error_code ec, const string& what_arg);` `system_error(error_code ec, const char* what_arg);` `system_error(error_code ec);` `system_error(int ev, const error_category& cat,` `const string& what_arg);` `system_error(int ev, const error_category& cat,` `const char* what_arg);` `system_error(int ev, const error_category& cat);` | `error_code`オブジェクト or エラー値 + エラーカテゴリとエラー理由の文字列から`system_error`オブジェクトを生成する | C++11
`const error_code& code() const noexcept;` | 包含している`error_code`オブジェクトへの参照を取得する | C++11
`virtual const char* what() const noexcept;` | メッセージを取得する メッセージ内容は実装依存だが、「`what_arg + ": " + code().message()`」という形式になると予想できる。 | C++11

## 例

    #include <iostream>
    #include <system_error>
    #include <string>

    int main()
    {
      try {
        std::error_code ec(static_cast<int>(std::errc::invalid_argument),
                           std::generic_category());

        throw std::system_error(ec, "system error!");
      }
      catch (std::system_error& e) {
        const std::error_code& ec = e.code();

        std::cout << ec.value() << std::endl;
        std::cout << e.what() << std::endl;
      }
    }

### 出力例

    22
    system error!: Invalid argument

## バージョン

### 言語

- C++11

### 処理系

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