Это работает, но я бы не стал делать это на твоем месте. Похоже, вы не удаляете эти данные кучи, когда закончите, а это означает, что вы создали утечку памяти. Компилятор C ++ заботится о том, чтобы данные об исключениях оставались в живых, даже когда стек извлечен, поэтому не думайте, что вам нужно использовать кучу.
Кстати, бросание std::string
- не лучший подход для начала. У вас будет намного больше гибкости, если вы будете использовать простой объект-обертку. Он может просто инкапсулировать string
на данный момент, но, возможно, в будущем вы захотите включить другую информацию, например, некоторые данные, которые вызвали исключение, или, возможно, номер строки (очень часто это). Вы не хотите менять всю обработку исключений в каждой точке вашей кодовой базы, поэтому следуйте по пути и не выбрасывайте необработанные объекты.