我有一个输入迭代器,它使用了两个方法getFirst和getNext。这两个函数都是api的一部分,理论上这些函数无论出于何种原因都可能无法运行。在这种情况下,我正在构建一个运行时异常。
我以前从未在C ++中使用过异常规范,但现在考虑可能是开始的好时机。所以我的构造函数和operator ++函数可以指定它们可以抛出运行时错误。
然后我在vector.h文件(std :: vector)中进行了快速搜索,但我没有看到在那里使用throw。怎么会?
如果我到达了迭代器的末尾并且我做*(i ++)应该有例外吗?
答案 0 :(得分:2)
答案 1 :(得分:0)
迭代器实际上无法知道它何时到达容器的末尾,因为STL迭代器不知道它们指向的容器。
因此,尝试增加它并取消引用它“可能”因为访问无效内存而抛出但是无法知道下一个索引是否有效。