C ++ライブラリ-<例外>

前書き

これは標準の例外クラスです。標準ライブラリのコンポーネントによってスローされるすべてのオブジェクトは、このクラスから派生します。したがって、参照によってこのタイプをキャッチすることにより、すべての標準例外をキャッチできます。

宣言

以下は、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 (デストラクタ) 破壊の例外です