Cuando el código falla, introducción a las excepciones en Python, 1

Hay partes del código donde algo puede salir mal y provocar una interrupción abrupta del programa o una experiencia molesta para el usuario. Y no estarás ahí para arreglar el problema.

Pero, puedes manejarlo decorosamente con la debida planeación.

En Python existe, como en muchos lenguajes, el concepto de manejo de excepciones.

Ejercicio 1, un programa sin manejo de excepciones

Este programa devuelve al usuario el elemento de una lista:

entrada = input('Escribe la posición del elemento que requieres: ') pos = int(entrada) mini_lista = ['cero', 'uno', 'dos', 'tres', 'cuatro'] print('El elemento que solicitaste es: ', mini_lista[pos])
Lenguaje del código: Python (python)

Mientras el usuario escriba un número entre 0 y 4 no tendrá problema, pero, al solicitar un ítem inexistente, tenemos un error como el siguiente.

File "/.../excepciones.py", line 4, in <module> print('El elemento que solicitaste es: ', mini_lista[pos]) IndexError: list index out of range
Lenguaje del código: Bash (bash)

Sería mejor no dejarlo a la suerte.

Ejercicio 2, el mismo programa, ahora con manejo de excepciones

Seamos precavidos y usemos uno de los bloques de construcción que vienen en Python para estos casos: try y except

entrada = input('Escribe la posición del elemento que requieres: ') pos = int(entrada) mini_lista = ['cero', 'uno', 'dos', 'tres', 'cuatro'] try: print('El elemento que solicitaste es:', mini_lista[pos]) except: print('¡Error!\nLas posiciones válidas en mini_lista van de 0 a', len(mini_lista)-1)
Lenguaje del código: Python (python)

Al ejecutar este programa e ingresando el número de una posición válida veremos algo como:

Escribe la posición del elemento que requieres: 2 El elemento que solicitaste es: dos
Lenguaje del código: Bash (bash)

Y si provocamos un error:

Escribe la posición del elemento que requieres: 23 ¡Error! Las posiciones válidas en mini_lista van de 0 a 4
Lenguaje del código: Bash (bash)

Cuando no hay errores, Python omite el bloque except.

En nuestro ejemplo hemos usado un except plano, sin argumentos, que atrapa cualquier tipo de excepción.

En el próximo artículo veremos que podemos ser más precisos, y resolver diversos tipos de excepciones.