为什么 std::stof、std::stod、std::stold 抛出异常的原因是什么?
http://en.cppreference.com/w/cpp/string/basic_string/stof
当通过异常处理错误不合适时,输入错误是一个常用的例子(通常用“异常情况”的古怪循环推理来表达,但仍然是一个很好的例子)。其他错误处理机制似乎并没有在 C++ 标准库中以某种方式被禁止。例如,另一个 C++11 新成员, family,使用返回类型std::unordered_map::insert
中的第二个元素表示失败。std::pair<iterator,bool>
函数内部的失败std::unordered_map::insert
似乎比输入错误更“异常”。如果不尝试插入,则可以保证插入成功,但如果不进行解析,则无法保证解析成功。
我只是想知道这些功能被纳入标准时的基本原理是什么。希望它在某个地方发布,或者委员会成员可以顺便来对此有所了解。我并不是要求对异常与其他机制的优缺点进行全面的论述。