GeezerVison is showing cpprefjp.github.io — stdexcept - cpprefjp C++日本語リファレンス
最終更新日時:
2026年10月03日 20時45分42秒 (JST)
Akira Takahashi
が更新
履歴
編集
<stdexcept>
stdexcept
<stdexcept>ヘッダは、標準的な例外クラスを提供する。
これらの例外クラスは、標準ライブラリ内でも使用されている。
これらのクラス群に反映されているエラーモデルでは、エラーは「実行時エラー (runtime error) 」と「論理エラー (logic error) 」との2つに大別される。
論理エラーを区別するための性質は、それがプログラムの内部的論理の誤りに起因することである。理論的には、それらは予め避けることができる。
対して、実行時エラーはプログラムの制御の及ばない事象に起因する。それらを前もって簡単に予見することはできない。
このヘッダで提供される例外クラスは以下の表の通りである。以下のクラスは全て、std名前空間で提供される。
例外クラスには継承関係があり、以下の箇条書きの階層構造で示す。
exception クラスを除く9つのクラスは、すべて同じpublicメンバ関数をもつ。
クラス名をTとすると、以下のpublicメンバ関数をもつ。
メンバ関数
名前
説明
対応バージョン
explicit T(const string & what_arg); // C++98 constexpr explicit T(const string & what_arg); // C++26
指定したメッセージを持つ例外オブジェクトを生成する
explicit T(const char* what_arg); // C++11 constexpr explicit T(const char* what_arg); // C++26
指定したメッセージを持つ例外オブジェクトを生成する
C++11
virtual const char* what() const throw(); // C++98 virtual const char* what() const noexcept; // C++11 constexpr virtual const char* what() const noexcept; // C++26
メッセージを取得する
例
ここでは、簡単な例外処理の例を示す。
#include
#include <iostream>
#include <cstdlib>
void f ()
{
// 例外を投げる
throw std::logic_error ( "an exception occurred" );
}
int main ()
{
try {
f ();
}
catch ( const std::logic_error & e ) {
// 例外が発生した!
std::cout << e . what () << std::endl ;
std::exit ( 1 );
}
}
関連項目
参照