Обратите внимание на следующее исключение: "
void some_function() {
throw std::exception("some error message");
}
int main(int argc, char **argv) {
try {
some_function();
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
exit(1);
}
return 0;
}
Безопасно ли поймать исключение броска по ссылке?
Меня беспокоит то, что исключение e
на самом деле помещено в стек some_function()
. Но some_function()
только что вернулся, в результате чего e
будет разрушено. Итак, теперь e
указывает на разрушенный объект.
Является ли мое беспокойство правильным?
Каков правильный способ передачи исключения без копирования его по значению? Должен ли я бросать new std::exception()
, чтобы он помещался в динамическую память?