lexical_cast int в строку - PullRequest
       28

lexical_cast int в строку

13 голосов
/ 29 апреля 2010

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

Ответы [ 3 ]

17 голосов
/ 29 апреля 2010

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

6 голосов
/ 29 апреля 2010

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

0 голосов
/ 24 июня 2010

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

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

...