std::current_exception
Материал из cppreference.com
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Определено в заголовочном файле <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"
[править] См. также
(C++11) |
общий тип указателя для обработки исключения объектов Оригинал: shared pointer type for handling exception objects Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (определение типа) |
(C++11) |
бросает исключение из std::exception_ptr Оригинал: throws the exception from an std::exception_ptr Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) |
(C++11) |
создает std::exception_ptr от объекта исключения Оригинал: creates an std::exception_ptr from an exception object Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) |