【发布时间】:2015-07-07 22:38:44
【问题描述】:
我打算用 C++ 开始这个新项目,并且正在考虑一种不痛苦的方法来进行错误处理。现在,我不打算开始抛出和捕获异常,而且很可能根本不会抛出异常,但我在想——即使是常规的错误处理,为什么要自己滚动/复制粘贴一个类来描述错误/状态,什么时候我可以只使用std::exception 及其子类(或者可能是std::optional<std::exception>)?
using Status = std::optional<std::exception>;
Status somethingThatMayFail(int x);
是否有人/任何项目以这种方式工作?这是一个荒谬的想法还是有点古怪?
【问题讨论】:
-
@vsoftco:见编辑。我说的是不抛出异常的错误处理。
-
有趣...我最近听说谷歌似乎在使用这样的系统,不知道是真是假。如果你的函数必须返回一些东西怎么办?你会使用一对/元组吗?
-
@vsoftco:我们不谈细节......问题只是关于报告错误的用途。但是 - 该函数将有一个输入/输出参数(引用或指针),或者它可能会返回一些案例类(我确信 C++ 现在有类似的东西,比 C 联合更好)。
-
这是一个有趣的问题,我没有看到您提出的例外情况,但我期待看到您问题的答案。但是imo您在最有用的地方没有使用异常:即在RAII中,您确保通过堆栈展开调用适当的析构函数。你提出的方式在某种意义上类似于 C 的做事方式,比如返回错误代码。
标签: c++ error-handling idioms