「std::system error」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「std::system_error とは、さまざまな関数(OS固有のインターフェイスのような典型的な関数)によって送出される例外のタイプで...」)
 
(相違点なし)

2013年12月27日 (金) 22:57時点における最新版

std::system_error とは、さまざまな関数(OS固有のインターフェイスのような典型的な関数)によって送出される例外のタイプです。

読み方

std::system_error
えすてぃーでぃー しすてむ えらー

概要

std::system_errorは、OS固有のエラーに関する例外を扱うクラスです。

ヘッダファイル

#include <system_error>

system_error1.cpp の例

ソースコード system_error1.cpp

#include <iostream>
#include <system_error>
#include <string>
using namespace std;
int main(int argc, char const* argv[])
{
        try {
                error_code ec(
                                static_cast<int>(errc::invalid_argument),
                                generic_category()
                          );
                throw system_error(ec, "System Error");
        } catch (system_error& e) {
                cerr << e.code() << endl;
                cerr << e.what() << endl;
        }
        return 0;
}

コンパイル

g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \
-Wl,-rpath=/usr/local/lib/gcc49  system_error1.cpp -o system_error1

実行例

% ./system_error1
generic:22
System Error: Invalid argument

thread.cpp の例

ソースコード thread.cpp

#include <thread>
#include <iostream>
#include <system_error>
 
int main()
{
        try {
                std::thread().detach(); // わざとスレッドがないのにデタッチする
        } catch(const std::system_error& e) {
                std::cout << "Caught system_error with code " << e.code()
                        << " meaning " << e.what() << '\n';
        }
	return 0;
}

コンパイル

g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \
-Wl,-rpath=/usr/local/lib/gcc49  thread.cpp -o thread

実行例

% ./thread
Caught system_error with code generic:22 meaning Invalid argument

関連項目