Hola Carlos , lista

Contesto algunas cosas y otras las dejo para espues de masticar un poco. Me voy 
a quedar sin dientes ajajajja
.


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).


La discución esta habierta, me encantaría conocer mas opiniones y claro la de 
Hernan tambien. Si tiene algun material de lectura y lo puede pasar, sería 
genial.
Yo pregunto,  la mayoria de las veces pocos contestan :(  y casi siempre son 
los mismos y  se los agradezco
Entiendo que todos tiene trabajo,  ocupaciones y muy poco tiempo o capas nada 
para decir jajaja.
Como en el caso de la pregunta sobre: "Como usan ST"



    Hay otros temas, como,
                por ejemplo:

              x.- el mecanismo de
                excepciones se complica cuando se disparan procesos

              paralelos y debe
                heredarse manejadores de excepciones, etc.

            
          
        
      
    
    Seguro, sería una complicación adicional. pero más para la VM y el
    administrador de procesos que para el programador.

Acá no entendí.



x.- el manejo de errores, a
                veces, quedan en lugares insólitos y no pueden

              ser rehusados fácilmente
                (sino que debe ser planificado).

            
          
        
      
    
    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.


A que te referís con  (rehusar es negarse) ?



No lo sé. A mí me molesta un poco, pero me molestaría más discutirlo
    en la lista de Smalltalking.

    Saludos

Entiendo que hay diferencias entre Ale y personas que participan de la lista y 
es una pena (tan pocos y tanto quilombo :( ). No me hago el dolobu por eso 
aclaré antes.
La verdad es que no me interesa saber los porque, es algo que no puedo manejar 
ni resolver 


saludos y gracias de nuevo
--- El mar 3-ago-10, Carlos E. Ferro <[email protected]> escribió:

De: Carlos E. Ferro <[email protected]>
Asunto: Re: [clubSmalltalk] StdioFileStream dolphin
Para: [email protected]
Fecha: martes, 3 de agosto de 2010, 13:55



  

    
  On 02/08/2010 11:50, Jose Gregoris wrote:
    
      
        
          
            Hola Carlos

              

              Perdón por la demora, pero estaba tratando de masticar un
              poco tu respuesta y mi concepto anterior.

            
          
        
      
    
    No hay problema, los emails permiten recuperar los contextos :-)

    

    
      
        
          
            No me gusta citar a
              alguien que no participa de la lista   ya que no puede
              aclarar sus comentarios,pero en este caso deberé hacerlo
              para tratar de aclarar mis dudas.

              Esto es lo que encontré en los históricos de smalltalking.

              Esto decía Ale reimondo en un mail , y hay otro comentario
              despues:

              

              Si, me refería a usar
                excepciones o usar #error: (o alguna

              alternativa similar).

              Cual es la diferencia?

              En el caso de

              self error: 'Ouch! que me
                paso?'

              o algo similar (el
                mensaje puede no ser #error: sino

              alguno más específico, lo
                cual permite SUBCLASIFICACION)

              quien tiene la
                responsabilidad de resolver el error

              es el objeto receptor en
                el contexto donde este ocurre

              y con el grado de
                abstracción donde se gesta el error.

              

              En cambio en el mecanismo
                de excepciones, quien

              maneja la excepcion NO es
                necesariamente el objeto

              responsable del error.
                Incluso esta excepcion se

              debe tratar de resolveren
                un contexto que (es muy

              provable) no tiene
                información específica ni el mismo

              grado de abstracción que
                el contexto donde el

              error/excepcion se
                genero.

            
          
        
      
    
    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.

    

    
      
        
          
            

              El manejo de errores por
                el mecanismo de excepciones

              me parece adecuado cuando
                uno trabaja con lenguajes

              de programación, donde el
                objeto no puede hacer mucho

              ni el sistema puede
                cambiar demasiado (como para

              generar errores
                inesperados).

              

            
          
        
      
    
    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...

    

    
      
        
          
            En el caso de un sistema de
                objetos donde (debido

              a delegación) el envío de
                un mensaje puede desencadenar

              una anidación de
                contextos diferente en distintos

              momentos del sistema (la
                delegación en objetos nuevos

              activa otros métodos), el
                no atender un error (u otra

              impureza del sistema) en
                el contexto donde se

              genera/instancia te
                produce el riezgo de que el

              error/impureza se
                propague a otras áreas o que no

              pueda ser tratada
                adecuadamente (por llegar a un grado

              de abstraccion muy alto,
                por ejm.).

              

              En resumen, es importante
                saber utilizar ambos

              mecanismos y reconocer
                que no son equivalentes

              sino complementarios.

            
          
        
      
    
    

    Seguro... pero eso no dice nada nuevo.

    

    
      
        
          
            

              

-------------------------------------------------------------------------------------

              

              

              En Smalltalk hay dos
                formas de manejar errores (hay un mail sobre el tema en

              la lista):

              1.- atención por parte de
                otro objeto (excepciones).

              2.- atención por parte
                del objeto responsable (receptor).

              

              El mecanismo (1) posee
                dos características que hacen que no sea completa:

              a) a menudo el manejador
                de la excepción no posee conocimiento sobre que es

              lo que ha ocurrido
                realmente o en que contexto ha ocurrido.

            
          
        
      
    
    

    Cierto. Por eso la excepción debería contener suficiente información
    como para que el manejador adquiera ese conocimiento.

    
      
        
          
            b) tiene que ser previsto un
                posible error, y además considerar TODOs los

              errores
                posibles/relacionados por parte de un objeto que no tomo
                la

              responsabilidad.

            
          
        
      
    
    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.

    
      
        
          
            y una característica que la
                hace muy conocida y cómoda para quien no ha

              trabajado mucho tiempo en
                objetos:

              c) existe en otros/varios
                "lenguajes de programación"

            
          
        
      
    
    

    Básicamente, porque la copiaron de Smalltalk...

    
      
        
          
            

              Hay otros temas, como,
                por ejemplo:

              x.- el mecanismo de
                excepciones se complica cuando se disparan procesos

              paralelos y debe
                heredarse manejadores de excepciones, etc.

            
          
        
      
    
    Seguro, sería una complicación adicional. pero más para la VM y el
    administrador de procesos que para el programador.

    
      
        
          
            x.- el manejo de errores, a
                veces, quedan en lugares insólitos y no pueden

              ser rehusados fácilmente
                (sino que debe ser planificado).

            
          
        
      
    
    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.

    
      
        
          
            

              El segundo mecanismo (2)
                es el más cómodo y apropiado para tu propósito.

              Todo error, aunque
                comience a ser tratado por una excepción; termina

              enviando el mensaje
                #error: a un objeto (a menudo, el objeto que encontró

              una condición adversa
                mientras resolvía una responsabilidad generada por un

              envío de mensaje).

              

-----------------------------------------------------------------------------------

              

              

              Según veo, tus comentarios  son contrapuestos a los de Ale
              y me confunde un poco. 

              Que opinión te merece lo que dice Ale ?

            
          
        
      
    
    

    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).

    

    
      
        
          
            

              

              

              Saludos kiko

              

              PD: Espero nadie se moleste por poner comentarios de
              personas que no participan de esta lista, si es así solo
              avisen y no lo hago mas 

            
          
        
      
    
    

    No lo sé. A mí me molesta un poco, pero me molestaría más discutirlo
    en la lista de Smalltalking.

    Saludos

    

    -- 

      

      
      signature
      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  
      This message and any
            attached documents contain information from Caesar Systems
            LLC that may be confidential/trade secret and/or privileged.
            If you are not the intended recipient, you may not read,
            copy, distribute or use this information. If you have
            received this transmission in error, please notify the
            sender immediately by telephone or by reply e-mail and then
            delete this message.
    
  


-- 

To post to this group, send email to [email protected]

To unsubscribe from this group, send email to 
[email protected]

 

http://www.clubSmalltalk.org



      

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a