Библиотека диагностики
Обработка исключений
Заголовок <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++11)(удалена в C++17) | функция, вызываемая при нарушении динамической спецификации исключений (функция) |
|
(устарела в C++11)(удалена в C++17) | тип функции, вызываемой std::unexpected (определение типа) |
|
(устарела в C++11)(удалена в C++17) | получает текущий unexpected_handler (функция) |
|
(устарела в C++11)(удалена в C++17) | изменяет функцию, вызываемую std::unexpected (функция) |
Категории исключений
В заголовке <stdexcept> заранее определено несколько удобных классов для сообщения об определённых условиях ошибок. Эти классы можно разделить на две категории: ошибки логики и ошибки времени выполнения. Ошибки логики возникают из-за некорректной логики программы и могут быть предотвращены. Ошибки времени выполнения связаны с событиями, не зависящими от программы, и их нельзя легко предсказать.
Определено в заголовке <stdexcept> |
|
|---|---|
| класс исключения для обозначения нарушений логических предусловий или инвариантов класса (класс) |
|
| класс исключения для сообщения о недопустимых аргументах (класс) |
|
| класс исключения для сообщения об ошибках области определения (класс) |
|
| класс исключения для сообщения о попытках превысить максимально допустимый размер (класс) |
|
| класс исключения для сообщения об аргументах, находящихся за пределами ожидаемого диапазона (класс) |
|
| класс исключения для обозначения условий, обнаруживаемых только во время выполнения (класс) |
|
| класс исключения для сообщения об ошибках диапазона во внутренних вычислениях (класс) |
|
| класс исключения для сообщения об арифметическом переполнении (класс) |
|
| класс исключения для сообщения об арифметическом антипереполнении (класс) |
|
|
(TM TS) | класс исключения для отмены атомарных транзакций (шаблон класса) |
Коды ошибок
Определено в заголовке <cerrno> |
|
|---|---|
| макрос, раскрывающийся в совместимую с POSIX потоково-локальную переменную с номером ошибки (переменная-макрос) |
|
| макросы для стандартных условий ошибок, совместимых с POSIX (константа-макрос) |
|
Системные ошибки (начиная с C++11)
Заголовок <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. Может быть отключён в сборках для выпуска. (макрос-функция) |
|
Трассировка стека (начиная с C++23)
Определено в заголовке <stacktrace> |
|
|---|---|
|
(C++23) | представление вызова в трассировке стека (класс) |
|
(C++23) | приближённое представление последовательности вызовов, состоящее из записей трассировки стека (шаблон класса) |
Поддержка отладки (начиная с C++26)
Определено в заголовке <debugging> |
|
|---|---|
|
(C++26) | приостанавливает выполнение программы при вызове (функция) |
|
(C++26) | вызывает std::breakpoint, если std::is_debugger_present возвращает true (функция) |
|
(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