Обработка ошибок
Содержание |
[править] Обработка исключений
Заголовок <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 по Обработка ошибок
|