интервал lexical_cast для строкового представления

Действительно ли безопасно проигнорировать исключение boost::lexical_cast при преобразовании int кому: std::string?

13
задан Motti 29 April 2010 в 13:19
поделиться

3 ответа

Исключение, вызванное лексическим приведением при преобразовании int в std :: string , связано не с преобразованием, а с недоступностью ресурса. Таким образом, вы можете игнорировать это так же, как игнорируете исключение bad_alloc , вызванное оператором new.

17
ответ дан 1 December 2019 в 22:06
поделиться

Как вы говорите, я не верю, что приведение может завершиться ошибкой для числовых типов по причинам преобразования - оно все равно может завершиться неудачно, потому что строка, конечно, не может быть выделена, но люди обычно не обнаруживают эту ошибку, кроме как на самом высоком уровне своего кода.

6
ответ дан 1 December 2019 в 22:06
поделиться

Если вы "проигнорируете" исключение, оно будет распространяться обратно вверх по стеку вызовов, пока не будет поймано в другом месте, или не завершит программу, смысл в том, что вы можете безопасно не ловить исключения, не беспокоясь о том, что ваша программа будет продолжаться и делать небезопасные/неизвестные вещи (до тех пор, пока "падение" в командную строку является приемлемым поведением при ошибке или у вас есть другой способ работы с неизвестными исключениями).

К сожалению, трассировку стека исключений не так легко получить в C++, поэтому создание полезных сообщений об ошибках, когда исключения не отлавливаются локально, не всегда просто.

0
ответ дан 1 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: