Введение
Это стандартный класс исключения. Все объекты, создаваемые компонентами стандартной библиотеки, являются производными от этого класса. Следовательно, все стандартные исключения могут быть перехвачены путем перехвата этого типа по ссылке.
Декларация
Ниже приводится объявление для 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 |
ошибка выполнения |
Это исключение ошибки времени выполнения |
Производные типы (через logic_error)
Sr. No. |
Производные типы |
Определение |
1 |
domain_error |
Это исключение из ошибки домена |
2 |
future_error |
Это исключение из будущей ошибки |
3 |
недействительным аргумент |
Это недопустимое исключение аргумента |
4 |
length_error |
Это исключение из-за ошибки длины |
5 |
вне диапазона |
Это исключение за пределами допустимого диапазона |
Производные типы (через runtime_error)
Sr. No. |
Производные типы |
Определение |
1 |
overflow_error |
Это исключение ошибки переполнения |
2 |
range_error |
Это исключение из ошибки диапазона |
3 |
системная ошибка |
Это исключение из системной ошибки |
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 |
(конструктор) |
Это исключение конструктора |
2 |
оператор = |
Это исключение для копирования |
3 |
какие |
Он используется для получения исключения, идентифицирующего строку |
4 |
(деструктор) |
Это исключение для уничтожения |