异常规范和std输入迭代器

时间:2012-06-29 07:25:12

标签: c++

我有一个输入迭代器,它使用了两个方法getFirst和getNext。这两个函数都是api的一部分,理论上这些函数无论出于何种原因都可能无法运行。在这种情况下,我正在构建一个运行时异常。

我以前从未在C ++中使用过异常规范,但现在考虑可能是开始的好时机。所以我的构造函数和operator ++函数可以指定它们可以抛出运行时错误。

然后我在vector.h文件(std :: vector)中进行了快速搜索,但我没有看到在那里使用throw。怎么会?

如果我到达了迭代器的末尾并且我做*(i ++)应该有例外吗?

2 个答案:

答案 0 :(得分:2)

  

如果我到达了迭代器的末尾并且我做*(i ++)应该有例外吗?

是的,这是一个错误。

关于异常规范,最好指定方法何时不抛出。而不是相反。看看this问题。

答案 1 :(得分:0)

迭代器实际上无法知道它何时到达容器的末尾,因为STL迭代器不知道它们指向的容器。

因此,尝试增加它并取消引用它“可能”因为访问无效内存而抛出但是无法知道下一个索引是否有效。

相关问题