使用`errc`或抛出异常

时间:2018-01-08 14:06:51

标签: c++

新的from_chars函数使用errc而不是抛出异常。动机是:

  

为什么我们不在解析错误上抛出异常?有两个原因:异常带来成本(特别是抛出时),解析错误不是特殊情况。

其他函数如stoi会抛出异常而stream会同时执行这两个函数(使用io_errc中编码的信息抛出异常)。使用相同的参数,stoi也不应该抛出异常,尽管它遵循使用std::out_of_range的惯例。 C ++的未来是否愿意尽可能使用errc而不是异常?有什么方法我更喜欢吗?

1 个答案:

答案 0 :(得分:0)

STL不会返回timeout它使用例外。

此外,抛出异常会产生成本。检查函数的返回值总是需要花费一些东西。

通常看起来异常是处理错误的标准方法,默认情况下应该使用IMO。

您可以在此处阅读一些信息http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0364r0.pdf

另外,您可以阅读这些内容http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Re-throw