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