Допустимо ли повторное создание необработанного исключения сопрограммы C++ с помощью `throw;`?C++

Программы на C++. Форум разработчиков
Anonymous
Допустимо ли повторное создание необработанного исключения сопрограммы C++ с помощью `throw;`?

Сообщение Anonymous »

Действителен ли следующий код в объекте обещания сопрограммы C++?

Код: Выделить всё

void
promise_type::unhandled_exception() noexcept
{
try {
// re-throw current exception
throw;
} catch (const std::exception &e) {
std::println(stderr, "unhandled exception in coroutine: {}",
e.what());
std::terminate();
} catch (...) {
std::println(stderr, "non-std::exception thrown");
std::terminate();
}
}
Альтернативой throw; может быть std::rethrow_Exceptionion(std::current_Exceptionion());. Однако я считаю, что throw; гораздо более читабелен и, похоже, работает как с gcc, так и с clang.


Подробнее здесь: https://stackoverflow.com/questions/798 ... with-throw

Вернуться в «C++»