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

std::exception_ptr

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

 
 
 
Обработка ошибок
Обработка исключений
Оригинал:
Exception handling
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
exception
uncaught_exception
exception_ptr(C++11)
make_exception_ptr(C++11)
current_exception(C++11)
rethrow_exception(C++11)
nested_exception(C++11)
throw_with_nested(C++11)
rethrow_if_nested(C++11)
Неудачи обработки исключений
Оригинал:
Exception handling failures
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
terminate
terminate_handler
get_terminate(C++11)
set_terminate
unexpected(устарело)
bad_exception
unexpected_handler(устарело)
get_unexpected(C++11)(устарело)
set_unexpected(устарело)
Исключение категорий
Оригинал:
Exception categories
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
logic_error
invalid_argument
domain_error
length_error
out_of_range
runtime_error
range_error
overflow_error
underflow_error
Коды ошибок
Оригинал:
Error codes
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Коды ошибок
errno
Утверждений
Оригинал:
Assertions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
assert
system_error центр
Оригинал:
system_error facility
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
error_category(C++11)
generic_category(C++11)
system_category(C++11)
error_condition(C++11)
errc(C++11)
error_code(C++11)
system_error(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 Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
По умолчанию построенных std::exception_ptr является нулевым указателем, она не указывает на объект исключения.
Оригинал:
Default-constructed std::exception_ptr is a null pointer, it does not point to an exception object.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Два экземпляра 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 Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
std::exception_ptr не неявно преобразовываться в любые арифметические, перечисление или тип указателя. Это, конвертируемых в bool.
Оригинал:
std::exception_ptr is not implicitly convertible to any arithmetic, enumeration, or pointer type. It is convertible to bool.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Исключение объекта на который ссылается 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 Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

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

#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 от объекта исключения
Оригинал:
creates an std::exception_ptr from an exception object
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]
captures the current exception in a std::exception_ptr
(функция) [edit]
бросает исключение из std::exception_ptr
Оригинал:
throws the exception from an std::exception_ptr
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]