У меня есть класс с API, который позволяет мне запрашивать объекты, пока он не выдаст исключение IndexOutOfBoundsException
.
Я хочу обернуть его итератором, чтобы иметь возможность писать более чистый код. Однако мне нужно перехватить исключение, чтобы остановить итерацию:
static IEnumerable<object> Iterator( ExAPI api ) {
try {
for( int i = 0; true; ++i ) {
yield return api[i]; // will throw eventually
}
}
catch( IndexOutOfBoundsException ) {
// expected: end of iteration.
}
}
Но ...
При использовании с выражением yield оператор возврата не может появляться в блок catch или в блоке try, который имеет один или несколько пунктов catch. Для большего информацию см. в разделе Обработка исключений Заявления (Справочник по C #). Заявления (Справочник по C #).
В идеале я хочу иметь возможность добавить часы в Visual Studio, а затем перейти в режим отладки, чтобы увидеть, когда изменится количество подключенных считывателей.
Есть ли способ сделать это? Я работаю на C #.
Заранее спасибо.
Мартин