我可以使用std :: optional进行错误处理吗?

时间:2018-05-10 06:03:15

标签: c++ stl c++17

使用C ++ 17,我们得到std::optional,这是表达可空类型的有用包装。

我可以用它来处理错误吗?这样做很有吸引力:

optional<int> Compute()
{
  //... compute something valid...
  return std::nullopt; // error!
}

这是一个不错的选择吗?是不是它返回一个空指针?

人们报告的问题是,如果发生错误,您将丢失一条消息。所以返回一些状态代码可能会更好。

其他替代方案:

  • std::variant<Value, errorCode>
  • std::pair<Value, errorCode
  • 返回错误代码并将值作为输出参数
  • 抛出异常

0 个答案:

没有答案