lexical_cast int в строку
Безопасно ли игнорировать исключение boost::lexical_cast
при конвертации int
в std::string
?
3 ответа
Исключение, вызванное лексическим приведением при преобразовании int
в std::string
связаны не с преобразованием, а с недоступным ресурсом. Таким образом, вы можете игнорировать это так же, как вы игнорируете исключение bad_alloc
поднят оператором новый.
Как вы говорите, я не верю, что приведение может завершиться неудачей для числовых типов по причинам преобразования - оно все равно может завершиться неудачей, потому что строка не может быть выделена, конечно, но люди обычно не улавливают эту ошибку, кроме как на самом высоком уровне их код.
Если вы "игнорируете" исключение, оно будет распространяться обратно вверх по стеку вызовов до тех пор, пока оно не будет перехвачено в другом месте, или не завершит программу, то есть вы можете безопасно не перехватывать исключения, не беспокоясь о продолжении вашей программы и выполнении небезопасных / неизвестных действий (как пока "сбой" в командной строке является допустимым поведением ошибки или у вас есть какой-то другой способ справиться с неизвестными исключениями).
К сожалению, трассировки стека исключений не так легко получить в C++, поэтому создание полезных сообщений об ошибках, когда исключения не обнаруживаются локально, не всегда легко.