12.05.2013 Views

Python para todos

Python para todos

Python para todos

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Excepciones<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, ZeroDivionError, junto<br />

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

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

63

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

Saved successfully!

Ooh no, something went wrong!