Tengo una clase con una API que me permite solicitar objetos hasta que arroja un IndexOutOfBoundsException
.iterador .NET para envolver throwing API
Quiero envolverlo en un iterador, para poder escribir código limpiador. Sin embargo, tengo que coger la excepción para detener la iteración:
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.
}
}
Pero ...
Cuando se utiliza con la expresión, una instrucción de retorno rendimiento no puede aparecer en un bloque captura o en un intento bloque que tiene una o más cláusulas catch. Para obtener más información acerca de , consulte Manejo de excepciones Declaraciones (Referencia de C#). Declaraciones (Referencia de C#). (del msdn)
¿Cómo puedo todavía envolver esta API?
@Coding Gorilla: ese es el punto: no. Comienza desde cero y sube. – xtofl