J'ai une classe avec une API qui me permet de demander des objets jusqu'à ce qu'il lance un IndexOutOfBoundsException
..NET itérateur pour lancer API de lancement
Je veux l'envelopper dans un itérateur, pour pouvoir écrire du code plus propre. Cependant, je dois attraper l'exception pour arrêter itérer:
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.
}
}
Mais ...
Lorsqu'il est utilisé avec l'expression, une déclaration de retour rendement ne peut pas apparaître dans un bloc catch ou dans un essai bloc qui a une ou plusieurs clauses de capture. Pour plus d'informations sur , voir Gestion des exceptions Instructions (référence C#) .Statements (référence C#). (du msdn)
Comment puis-je envelopper encore cette api?
@Coding Gorilla: c'est le point: non. Cela commence à zéro et remonte. – xtofl