Здравствуйте, MTD, Вы писали:
MTD>То код работы с коллекциями (которого в реальном коде процентов 80) превращается в что-то типа такого:
MTD>MTD>Iter i;
MTD>if (!GetIter(i, data)) return -1;
MTD>while (i.HasNext())
MTD>{
MTD> X x;
MTD> if (!i.Get(x)) return -1;
MTD> ...
MTD> if (!i.Next()) return -1;
MTD>}
MTD>
Непонятно.
Это все не нужно. GetIter не должен завершаться с ошибкой. HasNext и Next должны быть одним методом MoveNext, для которого тоже нет резона возвращать ошибку.
Get/Current — тут да, наверное ошибка может быть.
Мой вариант без исключений:
for (Iter i : data)
{
X x;
if (i.Get(x))
{
}
}