将int
转换为std::string
时忽略boost::lexical_cast
的例外是否安全?
答案 0 :(得分:17)
将int
转换为std::string
时词汇强制转换引发的异常与转换无关,但资源不可用。因此,您可以忽略这一点,就像忽略operator new引发的异常bad_alloc
一样。
答案 1 :(得分:6)
正如你所说,我不相信转换可能因转换原因导致数字类型失败 - 它仍然可能因为无法分配字符串而失败,但人们通常不会捕获该错误,除非在最高级别的代码。
答案 2 :(得分:0)
如果你“忽略”一个异常,它会传回调用堆栈,直到它被别处捕获,或者它终止程序,你可以安全地捕获异常,而不用担心你程序继续并执行不安全/未知的事情(只要命令提示符“崩溃”是可接受的错误行为,或者您有其他处理未知异常的方法)。
不幸的是,异常堆栈跟踪在C ++中并不容易获得,因此在本地未捕获异常时创建有用的错误消息并不容易。