Spec-Zone.ru › C++

Библиотека диагностики

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

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

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

Системные ошибки (начиная с C++11)

Заголовок <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. Может быть отключён в сборках для выпуска.
(макрос-функция)

Трассировка стека (начиная с C++23)

Определено в заголовке <stacktrace>
stacktrace_entry
(C++23)
представление вызова в трассировке стека
(класс)
basic_stacktrace
(C++23)
приближённое представление последовательности вызовов, состоящее из записей трассировки стека
(шаблон класса)

Поддержка отладки (начиная с C++26)

Определено в заголовке <debugging>
breakpoint
(C++26)
приостанавливает выполнение программы при вызове
(функция)
breakpoint_if_debugging
(C++26)
вызывает std::breakpoint, если std::is_debugger_present возвращает true
(функция)
is_debugger_present
(C++26)
проверяет, выполняется ли программа под управлением отладчика
(функция)

См. также

Объявление static_assert (C++11) выполняет проверку утверждения во время компиляции
Документация по C для Обработка ошибок

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/error

Spec-Zone.ru

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