[pyar] [Programacion] input function

fisa fisadev en gmail.com
Mie Mar 7 13:00:30 ART 2012


El día 7 de marzo de 2012 11:24, Claudio Freire
<klaussfreire en gmail.com> escribió:
> 2012/3/7 Ezequiel - <ezequielchan en gmail.com>:
>> Que quiero decir con eso? que podes usar un try, no cuesta nada hasta
>> que empiezan a existir exceptions en el medio, levantar toda la info
>> necesaria es mas costosa y esta bien que no debas optimizar el código
>> antes, pero para mi es mucho mas elegante y legible.
>
> Y equivocado, en mi opinión.
>
> Las validaciones que hace int() no son fácilmente reproducibles, y no
> hay real necesidad de reproducirlas, cuando que es perfectamente
> esperable que int() tire excepción. Lo que está mal es:
>
> try:
>     x = hacealgo_con_el_numero(int(raw_input(...)))
> except:
>     print "Meté un número"
>
> Pero simplemente porque estás protegiendo mucho más código del deseado
> y atrapando cualquier cosa indiscriminadamente, escondiendo errores
> más que recuperándote de los mismos.
>
> Lo correcto:
>
> x = raw_input(...)
> try:
>    x = int(x)
> except ValueError:
>    print "Meté un número"
>
> O sea, sólo atrapás el error que querés atrapar (ValueError), y sólo
> protegés int(x).
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar

IMHO
Es verdad que en este caso se sigue haciendo necesario el try/except,
porque no es simple reproducir todas las validaciones que haría int().
Pero entiendo lo que quiso decir ezequiel y es muy cierto. Es bastante
común ver abusos de try/except, donde es usado como estructura de
control para cosas que no son su objetivo.
Try/except sirve para capturar excepciones, para manejarlas con
"gracia", pero capturar una exception es un proceso mucho más caro que
resolver antes el camino con un if. El try/except debería ser el
"último recurso" para las cosas que no pudimos evitar por caminos
normales.

-- 
fisa  -  Juan Pedro Fisanotti



More information about the pyar mailing list