Обратите внимание на следующее исключение: "
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(), чтобы он помещался в динамическую память?