23.11.2012 Views

Python para todos

Python para todos

Python para todos

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />

vemos en el trazado de pila, el error estuvo causado por la llamada a<br />

calcular() de la línea 7, que a su vez llama a division(1, 0) en la<br />

línea 5 y en última instancia por la ejecución de la sentencia a / b de<br />

la línea 2 de division.<br />

A continuación vemos el tipo de la excepción, ZeroDivisionError,<br />

junto a una descripción del error: “integer division or modulo by zero”<br />

(módulo o división entera entre cero).<br />

En <strong>Python</strong> se utiliza una construcción try-except <strong>para</strong> capturar y<br />

tratar las excepciones. El bloque try (intentar) define el fragmento de<br />

código en el que creemos que podría producirse una excepción. El bloque<br />

except (excepción) permite indicar el tratamiento que se llevará a<br />

cabo de producirse dicha excepción. Muchas veces nuestro tratamiento<br />

de la excepción consistirá simplemente en imprimir un mensaje más<br />

amigable <strong>para</strong> el usuario, otras veces nos interesará registrar los errores<br />

y de vez en cuando podremos establecer una estrategia de resolución<br />

del problema.<br />

En el siguiente ejemplo intentamos crear un objeto f de tipo fichero.<br />

De no existir el archivo pasado como parámetro, se lanza una excepción<br />

de tipo IOError, que capturamos gracias a nuestro try-except.<br />

try:<br />

f = file(“archivo.txt”)<br />

except:<br />

print “El archivo no existe”<br />

<strong>Python</strong> permite utilizar varios except <strong>para</strong> un solo bloque try, de<br />

forma que podamos dar un tratamiento distinto a la excepción dependiendo<br />

del tipo de excepción de la que se trate. Esto es una buena<br />

práctica, y es tan sencillo como indicar el nombre del tipo a continuación<br />

del except.<br />

try:<br />

num = int(“3a”)<br />

print no_existe<br />

except NameError:<br />

print “La variable no existe”<br />

except ValueError:<br />

print “El valor no es un numero”<br />

66

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!