Можно ли игнорировать исключение boost::lexical_cast
при преобразовании int
в std::string
?lexical_cast int to string
ответ
Исключение, вызванное лексической литой при преобразовании int
в std::string
, не связано с преобразованием, но недоступно ресурсу. Таким образом, вы можете игнорировать это так же, как игнорируете исключение bad_alloc
, поднятое оператором new.
Обратите внимание, что я сказал как плакат «при преобразовании int в std :: string» –
Как вы говорите, я не считаю, что приведение может привести к сбою для числовых типов для целей преобразования - оно все равно может потерпеть неудачу, потому что строка не может быть выделена, конечно, но люди обычно не поймают эту ошибку, за исключением самый высокий уровень их кода.
Если вы «игнорировать» исключение будет распространяться обратно стек вызовов до тех пор, пока не будет пойман в другом месте, или она завершает программу, точка в том, вы может безопасно не перехватывать исключения, не заботясь о вас в программе непрерывного и делать небезопасные/неизвестные вещи (при условии, что «сбой» командной строки является допустимым поведением ошибки или у вас есть другой способ справиться с неизвестными исключениями).
К сожалению, стеки стека исключений не так легко получить на C++, поэтому создание полезных сообщений об ошибках, когда исключения не локализованы локально, не всегда легко.
Что вы подразумеваете под «ignore»? – 2010-04-29 09:20:31
Я не понимаю, почему этот прилив может потерпеть неудачу, поэтому я хочу выполнить бросок, не поймав bad_lexical_cast. – dimba
Вы должны ВСЕГДА переносить вызовы, которые могут быть брошены в try, catch blocks. – Konrad