The Wayback Machine - https://web.archive.org/web/20211006161926/https://ru.cppreference.com/w/cpp/error/exception_ptr
Пространства имён
Варианты
Действия

std::exception_ptr

Материал из cppreference.com
< cpp‎ | error

 
C++
Поддержка компилятором
Автономные и размещённые реализации
Язык
Заголовки стандартной библиотеки
Требования к именованию
Макросы тестирования функциональности (C++20)
Поддержка языка
Библиотека концептов (C++20)
Библиотека диагностики
Библиотека общих утилит
Библиотека строк
Библиотека контейнеров
Библиотека итераторов
Библиотека диапазонов (C++20)
Библиотека алгоритмов
Библиотека численных данных
Библиотека ввода/вывода
Библиотека локализаций
Регулярные выражения (C++11)
Атомарные операции (C++11)
Библиотека поддержки потоков (C++11)
Библиотека файловой системы (C++17)
Технические спецификации
Указатель символов
Внешние библиотеки
 
Библиотека утилит
Поддержка языка
Поддержка типа (базовые типы, RTTI, свойства типов)    
Макросы тестирования функциональности библиотеки (C++20)
Управление динамической памятью
Программные утилиты
Обработка ошибок
Поддержка сопрограмм (C++20)
Вариативные функции
(C++17)
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)  
(C++20)
Операции обмена и типа
(C++14)
(C++11)

(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

Элементарные преобразования строк
(C++17)
(C++17)

Stacktrace
 
Обработка ошибок
Обработка исключений
exception_ptr
(C++11)
Сбои обработки исключений
(до C++17)
(до C++17)
(C++11)(до C++17)
(до C++17)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Утверждения
Средства system_error
(C++11)
(C++11)
 
Определено в заголовочном файле <exception>
typedef /*unspecified*/ exception_ptr;
(начиная с C++11)
std::exception_ptr является обнуляемого указатель, как типа, который управляет исключения объекта, который был брошен и захватил с std::current_exception. Экземпляр std::exception_ptr может быть передана другой функции, возможно, на другой поток, в котором исключение может быть вызвано повторно и обрабатывается с уловом пункта.
Оригинал:
std::exception_ptr is a nullable pointer-like type that manages an exception object which has been thrown and captured with std::current_exception. An instance of std::exception_ptr may be passed to another function, possibly on another thread, where the exception may be rethrown and handled with a catch clause.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
По умолчанию построенных std::exception_ptr является нулевым указателем, она не указывает на объект исключения.
Оригинал:
Default-constructed std::exception_ptr is a null pointer, it does not point to an exception object.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Два экземпляра std::exception_ptr равными только тогда, когда они оба нулевые или оба точки, в тот же объект исключения.
Оригинал:
Two instances of std::exception_ptr compare equal only if they are both null or both point at the same exception object.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
std::exception_ptr не неявно преобразовываться в любые арифметические, перечисление или тип указателя. Это, конвертируемых в bool.
Оригинал:
std::exception_ptr is not implicitly convertible to any arithmetic, enumeration, or pointer type. It is convertible to bool.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Исключение объекта на который ссылается std::exception_ptr остается действительным до тех пор, пока остается хотя бы одна std::exception_ptr, которые на него ссылаются: std::exception_ptr является общей собственности смарт-указатель.
Оригинал:
The exception object referenced by an std::exception_ptr remains valid as long as there remains at least one std::exception_ptr that is referencing it: std::exception_ptr is a shared-ownership smart pointer.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

#include <iostream>
#include <string>
#include <exception>
#include <stdexcept>
 
void handle_eptr(std::exception_ptr eptr) // passing by value is ok
{
    try {
        if (eptr != std::exception_ptr()) {
            std::rethrow_exception(eptr);
        }
    } catch(const std::exception& e) {
        std::cout << "Caught exception \"" << e.what() << "\"\n";
    }
}
 
int main()
{
    std::exception_ptr eptr;
    try {
        std::string().at(1); // this generates an std::out_of_range
    } catch(...) {
        eptr = std::current_exception(); // capture
    }
    handle_eptr(eptr);
} // destructor for std::out_of_range called here, when the eptr is destructed

Вывод:

Caught exception "basic_string::at"

[править] См. также

создаёт std::exception_ptr из объекта исключения
(шаблон функции) [править]
фиксирует текущее исключение в std::exception_ptr
(функция) [править]
бросает исключение из std::exception_ptr
(функция) [править]