Manejo de la imperfeccion
Keywords: easytut

Siguiente: Fin Arriba: Tutor de Python para No-programadores Anterior: Lectura y escritura de archivos Contenido
Subsecciones

- Ejercicios

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

Siguiente: Fin Arriba: Tutor de Python para No-programadores Anterior: Lectura y escritura de archivos Contenido
Traducido por Victor M. Rosas-Garcia quimico69@yahoo.com