next up previous contents
Siguiente: Fin Arriba: Tutor de Python para No-programadores Anterior: Lectura y escritura de archivos   Contenido

Subsecciones

Manejo de la imperfección (o qué hacer con los errores)

Así que ya tiene el programa perfecto, funciona sin errores, excepto por un pequeño detalle: se muere si el usuario introduce información no válida.  No tema, porque Python tiene una estructura de control especial para usted.  Se llama try (intentar) e intenta hacer "algo".  Aquí tiene un ejemplo de un programa con un problema:

print "Escriba Control C or -1 para cerrar el programa"
numero = 1
while numero != -1:
numero = int(raw_input("Escriba un numero: "))
print "Usted escribio: ",numero

Observer ahora, cuando usted escribe @#& la salida es algo así:

Traceback (innermost last):
File "try_less.py", line 4, in ?
number = int(raw_input("Enter a number: "))
ValueError: invalid literal for int(): @#&

Como puede ver, la función int no está nada contenta con el número @#& (tal como debe ser).  El último renglón muestra cuál es el problema; Python encontró un ValueError (Valor Erróneo).  ¿Cómo puede manejar esto en su programa?  Lo primero que hacemos es: ponemos el lugar donde ocurren los errores en un bloque try, y luego: le decimos a Python qué queremos que haga con los errores de tipo ValueError.  El siguiente programa hace esto:

print "Escriba Control C or -1 para cerrar el programa"
numero = 1
while numero != -1:
try:
numero = int(raw_input("Escriba un numero: "))
print "Usted escribio: ",number
except ValueError:
print "Eso no es un numero."

Ahora, cuando ejecutamos el nuevo programa y le damos un @#& nos dice ``Eso no es un número.'' y continúa con lo que estaba haciendo.

Cuando su programa tiene algún error que usted sabe cómo manejar, pónga el código en un bloque try, y ponga el modo de manejar el error en el bloque except.

Ejercicios

Actualice por lo menos el programa de números telefónicos para que no truene si el usuario escribe cualquier dato en el menú.


next up previous contents
Siguiente: Fin Arriba: Tutor de Python para No-programadores Anterior: Lectura y escritura de archivos  Contenido
Josh Cogliati jjc@honors.montana.edu
Traducido por Victor M. Rosas-Garcia quimico69@yahoo.com