C贸mo capturar e imprimir mensajes de excepci贸n en Python

Rate this post

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.