en Java una clase puede implementar Iterable que le permite utilizar la instrucción foreach() y el azúcar sintáctico de iteración:En Java, ¿cómo escribirías el equivalente de Iterable que arrojaría excepciones?
for(T t:ts) ...
Sin embargo, esto no le permiten lanzar excepciones en la construcción de un iterador. Si estaba iterando de una red, archivo, base de datos, etc., sería bueno poder lanzar excepciones. Los candidatos obvios son java.io.InputStream, Reader y el código java.nio.Channel, pero nada de esto puede usar Generics como la interfaz Iterable.
¿Hay una lengua común o API de Java para esta situación?
Aclaración: Esto pregunta si hay un patrón o una interfaz alternativa para iterar para objetos de una fuente que no es de memoria. Como dijeron los que respondieron, no se recomienda lanzar RuntimeExceptions para evitar el problema o lo que estaba buscando.
Editar 2: Gracias por las respuestas hasta el momento. El consenso parece ser "no se puede". Entonces, ¿puedo extender la pregunta a "¿Qué haces en esta situación, cuando esta situación sería útil?" ¿Solo escribe tu propia interfaz?
Gracias por la respuesta. Pero si llama primero a initialise, primero tiene que leer todo en la memoria y perder el beneficio de la transmisión, o tiene que hacer frente a las excepciones –
Yup. Tienes que elegir una metáfora o la otra. Si está tratando con una transmisión verdadera, entonces es mejor que se quede con la metáfora de la corriente. – patros