Los errores de sintaxis se detectan en el proceso de compilación, pero Python puede detectar errores durante la ejecución del programa. Cuando se produce un error de ejecución, Python genera (raises) una excepción.
Para añadir este tipo de detección de errores, denominado manejo de excepciones, hay que encerrar nuestro código entre las clausulas try-except. El bloque que define la sentencia try será el código de nuestro programa en si. El código que viene detrás de la clausula except será el código que se ejecuta si se produjo alguna excepción. La sintaxis es la siguiente.
try: bloque_de_código except Error: acción_contra_el_error
Vimos al principio de este capítulo como solicitar del usuario que introduzca un número y convertirlo a entero, ya que la entrada estandar siempre era un string. ¿ Pero que pasa si el usuario introduce una cadena ? Una pequeña modificación a nuestro ejemplo manejando la excepcion nos ayudará.
>>> while True: ... try: ... x = int(raw_input("Introduce un número: ")) ... break ... except ValueError: ... print "Oops! No es un número válido. Intentalo de nuevo..." ...
Si hubieramos ejecutado simplemente la sentencia que nos pide introducir el número y este no es correcto, esta hubiera fallado abortando el programa.
>>> x = int(raw_input("Introduce un número: ")) Introduce un número: aaaa Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: invalid literal for int(): aaaa
Por tanto se ve claramente las posibilidades que tiene el manejo de excepciones para acotar firmemente nuestro programa.