考虑下面这个简单的函数声明:返回的值 - 错误指示值
vector<Date> getMonthArray(int month, int year);
至于C++ 11,我可以利用移动语义的和值,而不损失任何性能的返回日期矢量和避免使用'新'和'删除'。
问题是,如果功能失败,则不知道该返回什么。 E.G.一个月或一年都低于零
我都不能返回null,因为我可以用指针做, 所以我想到了两种可能性:
1)返回一个空数组 2)抛出一个异常
说实话,我讨厌这两个。很想听听更有经验的C++程序员的更好的解决方案。
编辑:
所以,抛出一个异常,真的看起来像最优雅的解决方案,因为它不涉及用户的需要,为了正常运行的功能(可抛出的异常,除了阅读任何文件)。我对么?或者其他更多的选择?
在此处抛出异常是要走的路。 – rightfold
@rightfold:护理阐述?在这种情况下,你怎么可能知道什么是OP的“正确”解决方案?异常处理可以是一个棘手的野兽,然后有各种各样的关于在哪里检查异常,这也正是他们应该处理的问题。也许对于有机磷农药代码的最好的事情就是打电话getMonthArray之前验证输入,因为他们可以,然后有依赖于该验证的输入等功能。我的观点是,不知道OP的代码库,称“使用例外”需要配备大量的盐。 – AndyG