En Python, cuando se produce un error, se genera una excepción. Las excepciones son objetos que simboliza el error y contiene información sobre el mismo.
Las excepciones son eventos que ocurren durante la ejecución de un programa y que alteran el flujo normal de instrucciones.
Esta excepción puede,
- Ser capturada por un bloque
try - Si no, pasa a la función que invocó a la que genero el error.
Así la excepción va “subiendo”. Si nadie la gestiona, la excepción llegará a la función principal y lo normal es que el programa termine abruptamente.
El bloque Try-Except
Las excepciones en Python se gestionan con un bloque Try-Except, que tiene la siguiente sintaxis básica,
try:
# Código que puede lanzar una excepción
except:
# Código a ejecutar si se produce una excepción
El bloque try se utiliza para encapsular el código que puede generar una excepción. Dentro de este bloque se coloca el código que se desea ejecutar y que podría lanzar una excepción.
Si no se produce ninguna excepción, el flujo del programa continúa normalmente. Si se produce una excepción, el flujo del programa se desvía al bloque except.
El bloque except se utiliza para capturar y manejar las excepciones que se producen dentro del bloque try. Dentro de este bloque se coloca el código que se desea ejecutar en caso de que se produzca una excepción.
try:
# Código que puede lanzar una excepción
resultado = 10 / 0
except:
# Código a ejecutar si se produce una excepción
print("Se produjo una excepción.")
En este caso,
- Dentro del bloque
trytenemos la operación10/0, que va a dar un error (porque no se puede dividir por cero). Así que saltará una excepción. - El bloque
exceptcapturará la excepción, y mostrará en pantalla el texto “Se produjo una excepnción.”
Bloque else
El bloque else se utiliza para ejecutar código si no se produce ninguna excepción en el bloque try.
try:
# Código que puede lanzar una excepción
resultado = 10 / 2
except ZeroDivisionError:
# Código a ejecutar si se produce una excepción del tipo ZeroDivisionError
print("No se puede dividir por cero.")
else:
# Código a ejecutar si no se produce ninguna excepción
print("La división fue exitosa. El resultado es:", resultado)
finally:
# Código a ejecutar siempre, independientemente de si se produce una excepción o no
print("Esta línea se ejecutará siempre.")
Bloque finally
El bloque finally se utiliza para ejecutar código independientemente de si se produce una excepción o no.
try:
# Código que puede lanzar una excepción
resultado = 10 / 0
except ZeroDivisionError:
# Código a ejecutar si se produce una excepción del tipo ZeroDivisionError
print("No se puede dividir por cero.")
finally:
# Código a ejecutar siempre, independientemente de si se produce una excepción o no
print("Esta línea se ejecutará siempre.")
Dentro de este bloque se coloca el código que se desea ejecutar siempre, por ejemplo, para liberar recursos o realizar alguna limpieza.
