简介
这是一个标准的异常类.标准库的组件抛出的所有对象都派生自此类.因此,可以通过引用捕获此类型来捕获所有标准异常.
声明
以下是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();
}
}
派生类型
Sr.No. | 派生类型 | 定义 |
---|
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 | 这是一个运行时错误异常 |
派生类型(通过logic_error)
Sr.No . | 派生类型 | 定义 |
---|
1 | domain_error | 这是一个域错误异常 |
2 | future_error | 这是未来的错误异常 |
3 | invalid_argument | 这是一个无效的参数异常 |
4 | length_error | 长度错误异常 |
5 | out_of_range | 这是一个超出范围的例外 |
派生类型(通过runtime_error)
Sr.No. | 派生类型 | 定义 |
---|
1 | overflow_error | 溢出埃罗例外 |
2 | range_error | 这是范围错误异常 |
3 | system_error | 这是一个系统错误异常 |
4 | underflow_error | 这是一个下溢错误异常 |
派生类型(通过bad_alloc)
Sr.No. | 派生类型 | 定义 |
---|
1 | bad_array_new_length | 这是一个不正确的数组长度 |
派生类型(通过system_error,自C ++ 11开始)
Sr.No. | 派生类型 | 定义 |
---|
1 | ios_base :: failure | 它是流异常的基类 |
会员功能
Sr.No. | 派生类型 | 定义 |
---|
1 | (constructor) | 它是构造函数异常 |
2 | operator = | 这是一个复制例外 |
3 | what | 它用于获取字符串识别异常 |
4 | (detructor) | 这是一个销毁异常 |