std::exception
Материал из cppreference.com
Определено в заголовочном файле <exception> | ||
class exception; | ||
Предоставляет согласованный интерфейс для обработки ошибок с помощью выражения throw.
Все исключения, сгенерированные стандартной библиотекой, наследуются от std::exception
.
Содержание |
[править]Функции-элементы
создаёт объект исключения (public функция-элемент) | |
[virtual] | уничтожает объект исключения (virtual public функция-элемент) |
копирует объект исключения (public функция-элемент) | |
[virtual] | возвращает поясняющую строку (virtual public функция-элемент) |
[править]Требования к стандартным исключениям
Каждый класс T
стандартной библиотеки, производный от std::exception
, имеет следующие общедоступные функции-элементы, каждая из которых не завершается исключением(до C++20)имеет спецификацию исключения, не создающую исключения(начиная с C++20):
| (начиная с C++20) |
Конструктор копирования и оператор присваивания копированием соответствуют следующему постусловию:
- Если два объекта lhs и rhs имеют динамический тип
T
и lhs является копией rhs, тогда std::strcmp(lhs.what(), rhs.what()) равно 0.
Функция-элемент | (начиная с C++20) |
[править]Стандартные исключения
- invalid_argument
- domain_error
- length_error
- out_of_range
- future_error(начиная с C++11)
- range_error
- overflow_error
- underflow_error
- regex_error(начиная с C++11)
- system_error(начиная с C++11)
- ios_base::failure(начиная с C++11)
- filesystem::filesystem_error(начиная с C++17)
- tx_exception(ТС TM)
- nonexistent_local_time(начиная с C++20)
- ambiguous_local_time(начиная с C++20)
- format_error(начиная с C++20)
- bad_any_cast(начиная с C++17)
- bad_optional_access(начиная с C++17)
- bad_expected_access(начиная с C++23)
- bad_weak_ptr(начиная с C++11)
- bad_function_call(начиная с C++11)
- bad_alloc
- bad_array_new_length(начиная с C++11)
- bad_exception
- ios_base::failure(до C++11)
- bad_variant_access(начиная с C++17)
[править]Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 471 | C++98 | не было требований к классам стандартной библиотеки, производным от std::exception | добавлены |