Обработка ошибок
Обработка исключений
Заголовок <exception> предоставляет несколько классов и функций, связанных с обработкой исключений в программах на C++.
Определено в заголовке <exception> |
|
|---|---|
| базовый класс для исключений, выбрасываемых компонентами стандартной библиотеки (класс) |
|
Захват и хранение объектов исключений |
|
|
(удалено в C++20)(C++17) | проверяет, находится ли в настоящее время в процессе обработки исключений (функция) |
|
(C++11) | тип разделяемой ссылки для обработки объектов исключений (typedef) |
|
(C++11) | создаёт std::exception_ptr из объекта исключения (шаблон функции) |
|
(C++11) | захватывает текущее исключение в std::exception_ptr (функция) |
|
(C++11) | выбрасывает исключение из std::exception_ptr (функция) |
|
(C++11) | тип-миксин для захвата и хранения текущих исключений (класс) |
|
(C++11) | выбрасывает свой аргумент с std::nested_exception (шаблон функции) |
|
(C++11) | выбрасывает исключение из std::nested_exception (шаблон функции) |
Обработка ошибок при обработке исключений |
|
Определено в заголовке <exception> |
|
| функция, вызываемая при сбое обработки исключений (функция) |
|
тип функции, вызываемой std::terminate (typedef) |
|
|
(C++11) | получает текущий terminate_handler (функция) |
изменяет функцию, которая должна вызываться std::terminate (функция) |
|
исключение, выбрасываемое, когда std::current_exception не удаётся скопировать объект исключения (класс) |
|
Обработка нарушений спецификации исключений (удалено в C++17) |
|
|
(удалено в C++17) | функция, вызываемая при нарушении динамической спецификации исключений (функция) |
|
(удалено в C++17) | тип функции, вызываемой std::unexpected (typedef) |
|
(C++11)(удалено в C++17) | получает текущий unexpected_handler (функция) |
|
(удалено в C++17) | изменяет функцию, вызываемую std::unexpected (функция) |
Категории исключений
В заголовке <stdexcept> определены несколько вспомогательных классов для отчёта об особых условиях ошибки. Эти классы можно разделить на две категории: логические ошибки и ошибки выполнения. Логические ошибки являются следствием некорректной логики в программе и могут быть предотвращены. Ошибки выполнения вызваны событиями, выходящими за пределы программы, и их нельзя легко предсказать.
Определено в заголовке <stdexcept> |
|
|---|---|
| класс исключений для указания нарушений логических предпосылок или инвариантов класса (класс) |
|
| класс исключений для сообщения о некорректных аргументах (класс) |
|
| класс исключений для сообщения об ошибках области (класс) |
|
| класс исключений для сообщения о попытках превысить максимальный разрешённый размер (класс) |
|
| класс исключений для сообщения об аргументах, выходящих за ожидаемый диапазон (класс) |
|
| класс исключений для указания условий, определяемых только во время выполнения (класс) |
|
| класс исключений для отчёта об ошибках диапазона во внутренних вычислениях (класс) |
|
| класс исключений для отчёта об арифметических переполнениях (класс) |
|
| класс исключений для отчёта об арифметических недоливаниях (класс) |
|
|
(TM TS) | класс исключений для отмены атомарных транзакций (шаблон класса) |
Номера ошибок
Определено в заголовке <cerrno> |
|
|---|---|
| макрос, который расширяется до переменной локальной для потока кода номера ошибки, совместимой с POSIX (макропеременная) |
|
| макросы для стандартных условий ошибок, совместимых с POSIX (макроконстанта) |
|
Ошибка системы
Заголовок <system_error> определяет типы и функции, используемые для сообщения об ошибках, возникших в операционной системе, потоках ввода-вывода, std::future, или других API низкого уровня.
Определено в заголовке <system_error> |
|
|---|---|
|
(C++11) | базовый класс для категорий ошибок (класс) |
|
(C++11) | идентифицирует общую категорию ошибок (функция) |
|
(C++11) | идентифицирует категорию ошибок операционной системы (функция) |
|
(C++11) | хранит переносимый код ошибки (класс) |
|
(C++11) | перечисление std::error_condition, перечисляющее все стандартные <cerrno> макроконстанты (класс) |
|
(C++11) | хранит платформозависимый код ошибки (класс) |
|
(C++11) | класс исключений, используемый для отчёта об ошибочных состояниях, имеющих error_code (класс) |
Утверждения
Утверждения помогают реализовать проверку предварительных условий в программах.
Определено в заголовке <cassert> |
|
|---|---|
прерывает выполнение программы, если указанное пользователем условие не true. Может быть отключено для релизных сборок (функциональное макрос) |
|
Стек вызовов
Определено в заголовке <stacktrace> |
|
|---|---|
|
(C++23) | представление оценки в стеке вызовов (класс) |
|
(C++23) | приблизительное представление последовательности вызовов состоит из записей стека вызовов (шаблон класса) |
См. также
static_assert объявление(C++11) | выполняет проверку утверждений на этапе компиляции |
| C документация для Обработка ошибок | |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/error