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