Python cuenta con un amplio soporte de excepciones y manejo de excepciones. Un evento de excepción interrumpe y, si no se captura, termina inmediatamente un programa en ejecución. Los ejemplos más populares son IndexError
, ValueError
y TypeError
.
Una excepción terminará inmediatamente tu programa. Para evitarlo, puedes atrapar la excepción con un bloque try/except
alrededor del código donde esperas que se produzca una determinada excepción. Así es como se atrapa e imprime una determinada excepción:
Para atrapar e imprimir una excepción ocurrida en un fragmento de código, envuélvelo en un bloque try
indentado, seguido del comando "except Exception as e"
que atrapa la excepción y guarda su mensaje de error en la variable de cadena e
. Ahora puedes imprimir el mensaje de error con "print(e)"
o utilizarlo para su posterior procesamiento.
try: # ... YOUR CODE HERE ... # except Exception as e: # ... PRINT THE ERROR MESSAGE ... # print(e)
Ejemplo 1: Atrapar e imprimir un IndexError
Por ejemplo, si intentas acceder al elemento de la lista con el índice 100 pero tu lista sólo consta de tres elementos, Python lanzará un IndexError
indicándote que el índice de la lista está fuera de rango.
try: lst = ['Alice', 'Bob', 'Carl'] print(lst[3]) except Exception as e: print(e) print('Am I executed?')
Tu genial código intenta acceder al cuarto elemento de la lista con índice 3, ¡que no existe!
Afortunadamente, envolviste el código en un bloque try/catch e imprimiste la excepción. El programa no se ha terminado. Por lo tanto, ejecuta la instrucción final print()
después de que se haya capturado y manejado la excepción. Esta es la salida del fragmento de código anterior.
list index out of range Am I executed?
Ejemplo 2: Atrapar e imprimir un ValueError
El ValueError
surge si intentas utilizar valores incorrectos en algunas funciones. Aquí tienes un ejemplo en el que se produce un ValueError porque has intentado calcular la raíz cuadrada de un número negativo:
import math try: a = math.sqrt(-2) except Exception as e: print(e) print('Am I executed?')
La salida muestra que no sólo el mensaje de error, sino también la cadena 'Am I executed?'
se imprime.
math domain error Am I executed?
Ejemplo 3: Atrapar e imprimir un TypeError
Python lanza el error TypeError
object is not subscriptable si utilizas la indexación con la notación de corchetes en un objeto que no es indexable. Este es el caso si el objeto no define el método __getitem__()
. Así es como puedes captar el error e imprimirlo en tu consola:
try: variable = None print(variable[0]) except Exception as e: print(e) print('Am I executed?')
La salida muestra que no sólo el mensaje de error, sino también la cadena ‘Am I executed?’ se imprime.
'NoneType' object is not subscriptable Am I executed?
Espero que ahora puedas captar e imprimir tus mensajes de error.
Resumen
Para atrapar e imprimir una excepción ocurrida en un fragmento de código, envuélvelo en un bloque try
indentado, seguido del comando "except Exception as e"
que atrapa la excepción y guarda su mensaje de error en la variable de cadena e
. Ahora puedes imprimir el mensaje de error con “print(e)
” o utilizarlo para su posterior procesamiento.