当前位置:  开发笔记 > 编程语言 > 正文

为什么std :: stof,std :: stod和std :: stold会处理异常错误?

如何解决《为什么std::stof,std::stod和std::stold会处理异常错误?》经验,为你挑选了1个好方法。

为什么std :: stof,std :: stod,std :: stold抛出异常的原因是什么?

http://en.cppreference.com/w/cpp/string/basic_string/stof

输入错误是一个常用的例子,当通过异常进行错误处理不合适时(通常用"异常情况"的古怪循环推理表达,但仍然是一个很好的例子).并不是说其他​​错误处理机制在C++标准库中以某种方式被禁止.例如,另一个C++ 11新手,该std::unordered_map::insert系列,表示在std::pair返回类型中使用第二个元素失败.std::unordered_map::insert函数内部的失败似乎比输入错误更"特殊".在不尝试插入的情况下,可以保证插入成功但不解析它就不可能保证解析成功.

我只是想知道当这些功能被接纳到标准中时的基本原理.希望它可以在某个地方发布,或者委员会成员可以匆匆而过,并对此有所了解.我不是要求就异常与其他机制的优缺点进行全面论述.



1> Nicol Bolas..:

原始论文N1803:简单数字访问使用异常.然而,该论文没有解释任何有关其设计设计的任何部分来自何处(例如为什么他们完全忽略分配器!).对它的后期修订(N1982,N2408)也没有说明为什么它们会抛出异常.如果除了这些文件之外还有其他记录,我不知道.

但是,我可以冒险猜测.我们可以看到该论文的初稿引发了异常.而且这似乎并没有引起争议.这可能源于以下观点:异常是指示C++中操作失败的标准方法,特别是C++标准库.

某些标准库类型具有其他错误机制(iostream).但一般来说,例外是默认情况.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有