微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

现代C ++:函数返回状态正常/不正常和错误如果状态不正常的最佳方法是什么?

如何解决现代C ++:函数返回状态正常/不正常和错误如果状态不正常的最佳方法是什么?

我们可以返回一个元组

std::pair<bool,std::string> fooFunction();

但这会使代码在创建返回值时变得多余,并迫使调用者处理元组(在c ++ 17中易于进行结构绑定)

if ( okayCondition)
    return {true,{}}; 
else 
   return { false,"blabla error"};

或者我们可以使用

std::optional<std::string> fooFunction();

这对于返回bool的现有函数很有趣,因为由于std :: optional运算符bool,大多数调用者都不需要更新

//Legacy code ok
if (fooFunction())

我知道有一个更重的方法一个模板化的ReturnStatus类,如果调用者未测试返回状态值,则会抛出该类。
还有其他方法吗?

解决方法

您可以考虑从函数中返回std::error_code

使用该类,您可以提供一个std::error_code::value(可用于错误处理)和一个std::error_code::message(如果有任何可操作的或可提供的信息)向用户显示信息。

,

做事的C ++方法是根本不返回状态。如果有错误,请抛出异常。错误代码是1980年代。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。