Spec-Zone.ru › C++

Обработка ошибок

Обработка исключений

Заголовок <exception> предоставляет несколько классов и функций, связанных с обработкой исключений в программах на C++.

Определено в заголовке <exception>
exception
базовый класс для исключений, выбрасываемых компонентами стандартной библиотеки
(класс)
Захват и хранение объектов исключений
uncaught_exceptionuncaught_exceptions
(удалено в C++20)(C++17)
проверяет, находится ли в настоящее время в процессе обработки исключений
(функция)
exception_ptr
(C++11)
тип разделяемой ссылки для обработки объектов исключений
(typedef)
make_exception_ptr
(C++11)
создаёт std::exception_ptr из объекта исключения
(шаблон функции)
current_exception
(C++11)
захватывает текущее исключение в std::exception_ptr
(функция)
rethrow_exception
(C++11)
выбрасывает исключение из std::exception_ptr
(функция)
nested_exception
(C++11)
тип-миксин для захвата и хранения текущих исключений
(класс)
throw_with_nested
(C++11)
выбрасывает свой аргумент с std::nested_exception
(шаблон функции)
rethrow_if_nested
(C++11)
выбрасывает исключение из std::nested_exception
(шаблон функции)
Обработка ошибок при обработке исключений
Определено в заголовке <exception>
terminate
функция, вызываемая при сбое обработки исключений
(функция)
terminate_handler
тип функции, вызываемой std::terminate
(typedef)
get_terminate
(C++11)
получает текущий terminate_handler
(функция)
set_terminate
изменяет функцию, которая должна вызываться std::terminate
(функция)
bad_exception
исключение, выбрасываемое, когда std::current_exception не удаётся скопировать объект исключения
(класс)
Обработка нарушений спецификации исключений (удалено в C++17)
unexpected
(удалено в C++17)
функция, вызываемая при нарушении динамической спецификации исключений
(функция)
unexpected_handler
(удалено в C++17)
тип функции, вызываемой std::unexpected
(typedef)
get_unexpected
(C++11)(удалено в C++17)
получает текущий unexpected_handler
(функция)
set_unexpected
(удалено в C++17)
изменяет функцию, вызываемую std::unexpected
(функция)

Категории исключений

В заголовке <stdexcept> определены несколько вспомогательных классов для отчёта об особых условиях ошибки. Эти классы можно разделить на две категории: логические ошибки и ошибки выполнения. Логические ошибки являются следствием некорректной логики в программе и могут быть предотвращены. Ошибки выполнения вызваны событиями, выходящими за пределы программы, и их нельзя легко предсказать.

Определено в заголовке <stdexcept>
logic_error
класс исключений для указания нарушений логических предпосылок или инвариантов класса
(класс)
invalid_argument
класс исключений для сообщения о некорректных аргументах
(класс)
domain_error
класс исключений для сообщения об ошибках области
(класс)
length_error
класс исключений для сообщения о попытках превысить максимальный разрешённый размер
(класс)
out_of_range
класс исключений для сообщения об аргументах, выходящих за ожидаемый диапазон
(класс)
runtime_error
класс исключений для указания условий, определяемых только во время выполнения
(класс)
range_error
класс исключений для отчёта об ошибках диапазона во внутренних вычислениях
(класс)
overflow_error
класс исключений для отчёта об арифметических переполнениях
(класс)
underflow_error
класс исключений для отчёта об арифметических недоливаниях
(класс)
tx_exception
(TM TS)
класс исключений для отмены атомарных транзакций
(шаблон класса)

Номера ошибок

Определено в заголовке <cerrno>
errno
макрос, который расширяется до переменной локальной для потока кода номера ошибки, совместимой с POSIX
(макропеременная)
E2BIG, EACCES, ..., EXDEV
макросы для стандартных условий ошибок, совместимых с POSIX
(макроконстанта)

Ошибка системы

Заголовок <system_error> определяет типы и функции, используемые для сообщения об ошибках, возникших в операционной системе, потоках ввода-вывода, std::future, или других API низкого уровня.

Определено в заголовке <system_error>
error_category
(C++11)
базовый класс для категорий ошибок
(класс)
generic_category
(C++11)
идентифицирует общую категорию ошибок
(функция)
system_category
(C++11)
идентифицирует категорию ошибок операционной системы
(функция)
error_condition
(C++11)
хранит переносимый код ошибки
(класс)
errc
(C++11)
перечисление std::error_condition, перечисляющее все стандартные <cerrno> макроконстанты
(класс)
error_code
(C++11)
хранит платформозависимый код ошибки
(класс)
system_error
(C++11)
класс исключений, используемый для отчёта об ошибочных состояниях, имеющих error_code
(класс)

Утверждения

Утверждения помогают реализовать проверку предварительных условий в программах.

Определено в заголовке <cassert>
assert
прерывает выполнение программы, если указанное пользователем условие не true. Может быть отключено для релизных сборок
(функциональное макрос)

Стек вызовов

Определено в заголовке <stacktrace>
stacktrace_entry
(C++23)
представление оценки в стеке вызовов
(класс)
basic_stacktrace
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API