Cpp Standard Library 简明教程

C++ Library - <exception>

Introduction

它是一个标准的异常类。标准库组件抛出的所有对象都派生自此类。因此,所有标准异常都可以通过按引用捕获此类型来捕获。

Declaration

以下是 std::exception 的声明。

class exception;

Example

以下是在 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();
   }
}

Derived types

Sr.No.

Derived types

Definition

1

bad_alloc

分配内存失败时抛出此异常

2

bad_cast

动态转换失败时抛出此异常

3

bad_exception

意外处理程序抛出此异常

4

bad_function_call

错误调用时抛出此异常

5

bad_typeid

typeid 为空指针时抛出此异常

6

bad_weak_ptr

这是一个错误的弱指针

7

ios_base::failure

它是流异常的基础类

8

logic_error

这是一个逻辑错误异常

9

runtime_error

这是一个运行时错误异常

Derived types(through logic_error)

Sr.No.

Derived types

Definition

1

domain_error

这是一个域错误异常

2

future_error

这是一个 future 错误异常

3

invalid_argument

这是一个无效参数异常

4

length_error

这是一个长度错误异常

5

out_of_range

这是一个超出范围的异常

Derived types(through runtime_error)

Sr.No.

Derived types

Definition

1

overflow_error

它是一个溢出错误异常

2

range_error

它是一个范围错误异常

3

system_error

它是一个系统错误异常

4

underflow_error

它是一个下溢错误异常

Derived types(through bad_alloc)

Sr.No.

Derived types

Definition

1

bad_array_new_length

它是一个数组长度错误的异常

Derived types(through system_error, since C++11)

Sr.No.

Derived types

Definition

1

ios_base::failure

它是流异常的基础类

Member functions

Sr.No.

Derived types

Definition

1

(constructor)

It is constructor exception

2

[role="bare"]../cpp_standard_library/cpp_exception_operator.html

它是一个复制异常

3

what

它用于获取识别异常的字符串

4

(destructor)

它是一个销毁异常