java – 在消费者函数抛出异常后,Spliterator是否应该可重用?
Spliterator在其tryAdvance和forEachRemaining方法中采用任意Consumer函数. 如果消费者抛出异常,分裂者的状态应该是什么?如果传递给forEachRemaining的消费者在10个项目之后抛出一个异常(然后传播出来并被捕获),那么下一个对分裂器中的tryAdvance的调用是否会返回第11个项目,或者是否应该将分裂器视为死亡&那时无效? javadocs在这一点上含糊不清;他们只是说任何例外情况都会传播出去,而没有提到分裂者在那之后的状态 最佳答案
我相信在失败之后你不应该走得更远.
分裂器停止其工作,不再迭代元素.即使有剩余的元素. forEachRemaining中特定元素的异常意味着整个组的计算结束.
Spliterators.ArraySpliterator如何处理此问题的示例.
AFAIK,大多数基于集合/数组的Spliterators都以这种方式工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |