前書き
これは標準の例外クラスです。標準ライブラリのコンポーネントによってスローされるすべてのオブジェクトは、このクラスから派生します。したがって、参照によってこのタイプをキャッチすることにより、すべての標準例外をキャッチできます。
宣言
以下は、std :: exceptionの宣言です。
class exception;
例
以下のstd :: exceptionの例では。
#include <thread>
#include <vector>
#include <iostream>
#include <atomic>
std::atomic_flag lock = ATOMIC_FLAG_INIT;
void f(int n) {
for (int cnt = 0; cnt < 100; ++cnt) {
while (lock.test_and_set(std::memory_order_acquire))
;
std::cout << "Output from thread " << n << '\n';
lock.clear(std::memory_order_release);
}
}
int main() {
std::vector<std::thread> v;
for (int n = 0; n < 10; ++n) {
v.emplace_back(f, n);
}
for (auto& t : v) {
t.join();
}
}
派生タイプ
シニア番号 |
派生タイプ |
定義 |
1 |
bad_alloc |
この例外は、メモリの割り当てに失敗するとスローされます |
2 |
bad_cast |
この例外は、動的キャストの失敗時にスローされます |
3 |
bad_exception |
これは予期しないハンドラーによってスローされた例外です |
4 |
bad_function_call |
この例外は不正な呼び出しでスローされます |
5 |
bad_typeid |
nullポインタのtypeidでスローされるこの例外 |
6 |
bad_weak_ptr |
それは悪い弱いポインタです |
7 |
ios_base :: failure |
ストリーム例外の基本クラスです |
8 |
logic_error |
論理エラー例外です |
9 |
ランタイムエラー |
ランタイムエラーの例外です |
派生型(logic_errorを介して)
シニア番号 |
派生タイプ |
定義 |
1 |
domain_error |
ドメインエラー例外です |
2 |
future_error |
これは将来のエラー例外です |
3 |
無効な引数 |
無効な引数の例外です |
4 |
length_error |
長さエラーの例外です |
5 |
out_of_range |
範囲外の例外です |
派生型(runtime_errorを介して)
シニア番号 |
派生タイプ |
定義 |
1 |
オーバーフローエラー |
オーバーフローエラー例外です |
2 |
range_error |
範囲エラー例外です |
3 |
システムエラー |
システムエラー例外です |
4 |
underflow_error |
アンダーフローエラー例外です |
派生型(bad_allocを介して)
シニア番号 |
派生タイプ |
定義 |
1 |
bad_array_new_length |
配列の長さが悪い場合は例外です |
派生型(C ++ 11以降、system_errorを介して)
シニア番号 |
派生タイプ |
定義 |
1 |
ios_base :: failure |
ストリーム例外の基本クラスです |
メンバー関数
シニア番号 |
派生タイプ |
定義 |
1 |
(コンストラクタ) |
コンストラクタ例外です |
2 |
演算子= |
コピー例外です |
3 |
何 |
例外を識別する文字列を取得するために使用されます |
4 |
(デストラクタ) |
破壊の例外です |