Пространства имён
Варианты
Действия

std::current_exception

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

 
 
Библиотека утилит
Поддержка языка
Поддержка типа (базовые типы, 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
 
Обработка ошибок
Обработка исключений
current_exception
(C++11)
Сбои обработки исключений
(до C++17)
(до C++17)
(C++11)(до C++17)
(до C++17)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Утверждения
Средства system_error
(C++11)
(C++11)
 
Определено в заголовочном файле <exception>
std::exception_ptr current_exception()
(начиная с C++11)
При вызове во время обработки исключений (как правило, в catch пункта), захватывает текущий объект исключения и создает std::exception_ptr, которая содержит ссылку на этот объект исключения, или копия этого объекта исключения (это определяется реализацией, если копия сделал)
Оригинал:
If called during exception handling (typically, in a catch clause), captures the current exception object and creates an std::exception_ptr that holds a reference to that exception object, or to a copy of that exception object (it is implementation-defined if a copy is made)
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если реализация этой функции требует вызова new, и вызов не удается, возвращается указатель будет содержать ссылку на экземпляр std::bad_alloc
Оригинал:
If the implementation of this function requires a call to new and the call fails, the returned pointer will hold a reference to an instance of std::bad_alloc
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если реализация этой функции требует, чтобы скопировать захваченный объект исключения, и его копия конструктор генерирует исключение, возвращается указатель будет содержать ссылку на исключение. Если конструктор копирования брошенный объект исключения также бросает, возвращается указатель может содержать ссылку на экземпляр std::bad_exception разорвать бесконечный цикл.
Оригинал:
If the implementation of this function requires to copy the captured exception object and its copy constructor throws an exception, the returned pointer will hold a reference to the exception thrown. If the copy constructor of the thrown exception object also throws, the returned pointer may hold a reference to an instance of std::bad_exception to break the endless loop.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если функция вызывается, когда исключение не обрабатывается, пустой std::exception_ptr возвращается.
Оригинал:
If the function is called when no exception is being handled, an empty std::exception_ptr is returned.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

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

(Нет)

[править] Возвращаемое значение

Экземпляр std::exception_ptr содержащая ссылку на объект исключения, или копию объекта исключения, или экземпляр std::bad_alloc или экземпляр std::bad_exception.
Оригинал:
An instance of std::exception_ptr holding a reference to the exception object, or a copy of the exception object, or to an instance of std::bad_alloc or to an instance of std::bad_exception.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Исключения

спецификация noexcept:  
noexcept
  

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

#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 из объекта исключения
(шаблон функции) [править]