如何解决现代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 举报,一经查实,本站将立刻删除。