On 02/08/2010 11:50, Jose Gregoris wrote:
No hay problema, los emails permiten recuperar los contextos :-) En líneas generales estoy de acuerdo. Y no soy muy partidario de las excepciones dentro del código de la aplicación. Para una posición más extrema (y bien fundamentada) sobre el uso de excepciones dentro del dominio de aplicación, podés preguntarle a Hernán Wilkinson (que sí está en esta lista). Pero en este caso, estamos hablando de artefactos que de por sí ya son de bajo nivel: un stdioFileStream y la librería de base que se conecta al SO. ¿Qué chances tienen esos artefactos de resolver la excepción, aunque se genera en su contexto? NINGUNA. No hay nada interesante que puedan hacer, aunque sí muchas cosas molestas y peligrosas. Si implementara #error: o inclusive fileNotFoundError: en StdioFileStream, lo único que podría hacer es... generar una excepción. Esto es algo que pasa muchas veces: uno puede pensar que el mejor contexto para resolver el problema, es el más cercano. Porque ahí todavía estamos cerca, sabemos exactamente qué pasó y estaríamos en mejores condiciones para resolver las cosas. Todavía no le respondimos nada feo o equivocado a nadie. Pero en realidad, la semántica de la operación suele estar indicada mucho más arriba. En estos casos, claramente es mejor que la excepción la maneje el que pidió las cosas, no el que las está haciendo (que es un "tonto" de bajo nivel). Otro ejemplo clásico del manejo de excepciones: un Float recibe / con cero como argumento. ¿Cómo va a manejar eso? No hay chance. Entiendo que tratar de "adivinar" a partir de una excepción, en otro contexto, cuál fue el problema y cómo solucionarlo es arriesgado. Por eso también enfatizaba que hay que proveer excepciones claras y específicas. Si "desde arriba" se ve un error genérico, los intentos de solución son aventurados o necios, como esos carteles de Windows donde te dice: "Su operación falló; tal vez usted hizo esto o tiene aquello o debería revisar lo de más acá". Ahí se ve que tienen un error genérico, y conocen tres posibles fuentes de ese error...
Seguro... pero eso no dice nada nuevo.
Cierto. Por eso la excepción debería contener suficiente información como para que el manejador adquiera ese conocimiento. No, de ninguna manera. Nunca se pueden prever todos los errores posibles, ni tiene sentido hacerlo. para eso hay manejadores por defecto de las excepciones. Tiene que haber excepciones específicas y relevantes, y el manejador tomará las que considera que es su responsabilidad y capacidad atender. Como cualquier objeto.
Básicamente, porque la copiaron de Smalltalk... Seguro, sería una complicación adicional. pero más para la VM y el administrador de procesos que para el programador. Totalmente en desacuerdo. El manejo de errores tiene que quedar donde hay información para hacerlo, donde se conoce cuál era la intención de la operación y hay una lógica posible para la recuperación. Y si está en el lugar correcto, es parte del comportamiento del objeto y puede ser reusado (rehusar es negarse) tan fácilmente como el resto.
Espero haberlo dejado claro; estoy de acuerdo en algunas cosas y en desacuerdo en muchas otras. De todos modos, te doy una diferencia fundamental: en ese texto, él está hablando en general y sin un ejemplo concreto. Yo sólo me atengo al caso que vos trajiste, un pedazo de código en una clase de stream. Tal vez, en este contexto puntual, su opinión se parezca más a la mía. Para la discusión más general, te recomiendo de nuevo contactar a Hernán, tal vez él tenga algo escrito sobre el uso de excepciones (recuerdo haber visto una clase muy interesante en la materia de la UBA).
No lo sé. A mí me molesta un poco, pero me molestaría más discutirlo en la lista de Smalltalking. Saludos --
-- carlos e. ferro | senior
developer |
caesar systems
| see clearly. decide
smarter. [email protected] | t: +1.281.598.8790
| t: +54.11.4389.0126 | www.caesarsystems.com To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org |
Title: signature
- [clubSmalltalk] StdioFileStream dolphin Jose Gregoris
- Re: [clubSmalltalk] StdioFileStream dolphin Carlos E. Ferro
- Re: [clubSmalltalk] StdioFileStream dolphin Jose Gregoris
- Re: [clubSmalltalk] StdioFileStream dolphin Carlos E. Ferro
- Re: [clubSmalltalk] StdioFileStream dolp... Jose Gregoris
- Re: [clubSmalltalk] StdioFileStream... Carlos E. Ferro
- Re: [clubSmalltalk] StdioFileSt... Jose Gregoris
- Re: [clubSmalltalk] StdioFi... Carlos E. Ferro
- Re: [clubSmalltalk] StdioFi... Jose Gregoris
- Re: [clubSmalltalk] StdioFi... Carlos E. Ferro
- Re: [clubSmalltalk] StdioFi... Jose Gregoris
- Re: [clubSmalltalk] StdioFi... GallegO
- Re: [clubSmalltalk] StdioFi... Jose Gregoris
- Re: [clubSmalltalk] StdioFi... GallegO
- Re: [clubSmalltalk] StdioFileStream dolp... Andres Valloud
- Re: [clubSmalltalk] StdioFileStream dolphin Guillermo Sapaya
