しょっちゅう自分で投げるクラスは赤くした。
発生タイミングについては、仕様的な記述を見たことがないので、かなり個人的な解釈が含まれている。
std::exception #include<exception> | std::bad_alloc #include<new> new演算子によるメモリ確保に失敗したとき | |
std::bad_cast #include<typeinfo> dynamic_cast演算子に参照を渡した場合の ダウンキャストに失敗したとき | ||
std::bad_typeid #include<typeinfo> typeid演算子の引数に、0 又は NULLを指定したとき | ||
std::logic_error #include<stdexcept> 事前条件が満たされないとき | std::out_of_range #include<stdexcept> 引数に指定した値が、有効な範囲の外側を指しているとき | |
std::invalid_argument #include<stdexcept> 引数に指定した値が、意味的に正しくない引数のとき | ||
std::length_error #include<stdexcept> 最大の長さを超える、長さをもつ値による処理を行おうとしたとき | ||
std::domain_error #include<stdexcept> 上記以外での、範囲・領域に問題があったとき | ||
std::bad_exception #include<exception> 関数がthrowで指定しているもの以外の例外をスローしたとき | ||
std::runtime_error #include<stdexcept> 処理を実行した結果、問題が発生したとき | std::range_error #include<stdexcept> 演算処理の過程において、有効な範囲外の値となったとき | |
std::overflow_error #include<stdexcept> 数値演算を行った結果、オーバーフローが発生したとき | ||
std::underflow_error #include<stdexcept> 数値演算を行った結果、アンダーフローが発生したとき | ||
std::ios_base::failure #include<ios> 入出力ストリームの処理の中でエラーが発生したとき |