Cod*_*lad 7 c++ error-handling tuples return-value std-pair
在没有进入一般异常与错误代码讨论的情况下,您认为使用std::pair或std:tuple返回多个值的缺点是什么,即函数的返回值和错误/成功代码,类似于Go开发人员显然有多少错误处理?
这种方法显然具有不必使用函数返回值或错误代码的参数的优点(取决于您喜欢它的方式).
“您认为使用 std::pair 或 std:tuple 返回多个值(即函数的返回值和错误/成功代码)的缺点是什么”
这种简单化(C 级别)故障处理方法的主要缺点是
也就是说,还有更多可能出错的地方,例如访问不确定的结果值。或者当函数没有产生有意义的返回值时仅使用返回值。
旧的 Barton & NackmanFallow类通过限制对结果值的访问解决了这个安全问题。本质上,调用代码必须在使用结果值之前检查是否存在结果 值,并且使用逻辑上不存在的结果值会导致异常或终止。班级boost::optional的做法也大致相同。
如果您不想依赖 Boost,那么Optional为 POD 结果类型实现一个类是微不足道的,并且以一点可能的低效率(动态分配)为代价,您可以只使用 astd::vector来携带非 POD 可能的结果。
挑战在于保持调用代码的清晰度,这是练习的重点……