Обработка ошибок
Содержание |
[править] Обработка исключений
Заголовок <exception> предоставляет несколько классов и функций, связанных с обработкой исключений в программах на C++.
| Определены в заголовочном файле
<exception> | |
| базовый класс для исключений, создаваемых компонентами стандартной библиотеки (класс) | |
Захват и хранение объектов исключений | |
| (убрано в C++20) (C++17) |
проверяет, выполняется ли в настоящее время обработка исключений (функция) |
| (C++11) |
тип общего указателя для обработки объектов исключений (определение типа) |
| (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 (определение типа) | |
| (C++11) |
получает текущий terminate_handler (функция) |
| изменяет функцию, вызываемую из std::terminate (функция) | |
| исключение, которое возникает, когда std::current_exception не может скопировать объект исключения (класс) | |
Обработка нарушений спецификации исключений (удалено в C++17) | |
| (убрано в C++17) |
функция, вызываемая при нарушении спецификации динамического исключения (функция) |
| (убрано в C++17) |
тип функции, вызываемой из std::unexpected (определение типа) |
| (убрано в C++17) |
изменяет функцию, которая будет вызываться из std::unexpected (функция) |
| (убрано в C++17) |
изменяет функцию, вызываемую из std::unexpected (функция) |
[править] Категории исключений
В заголовке <stdexcept> предопределено несколько вспомогательных классов для сообщения об определённых ошибочных условиях. Эти классы можно разделить на две категории: логические ошибки и ошибки времени выполнения. Логические ошибки являются следствием неправильной логики программы и их можно предотвратить. Ошибки выполнения возникают из-за событий, выходящих за рамки программы, и их нелегко предсказать.
| Определены в заголовочном файле
<stdexcept> | |
| класс исключения для обозначения нарушений логических предварительных условий или инвариантов класса (класс) | |
| класс исключения для сообщения о недопустимых аргументах (класс) | |
| класс исключения для сообщения об ошибках домена (класс) | |
| класс исключения для сообщения о попытках превышения максимально допустимого размера (класс) | |
| класс исключения для сообщения, что аргументы за пределами ожидаемого диапазона (класс) | |
| класс исключения для обозначения условий, обнаруживаемых только во время выполнения (класс) | |
| класс исключения для сообщения об ошибках диапазона во внутренних вычислениях (класс) | |
| класс исключения для сообщения об арифметических переполнениях (класс) | |
| класс исключения для сообщения об арифметических потерях (класс) | |
| (ТС TM) |
класс исключения для отмены атомарных транзакций (шаблон класса) |
[править] Номера ошибок
| Определены в заголовочном файле
<cerrno> | |
| макрос, который расширяется до переменной номера локальной ошибки потока, совместимой с POSIX (macro variable) | |
| макросы для стандартных состояний ошибок, совместимых с POSIX (константа-макрос) | |
[править] Утверждения
Утверждения помогают реализовать проверку предусловий в программах.
| Определены в заголовочном файле
<cassert> | |
| прерывает выполнение программы, если указанное пользователем условие не равно true. Может быть отключено для релизовых сборок (функция-макрос) | |
[править] Системная ошибка
Заголовок <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 (класс) |
[править] Смотрите также
объявление static_assert(C++11)
|
выполняет проверку утверждения во время компиляции |
| Документация по C для Обработка ошибок
| |

