Excepciones en Python
Excepciones en Python
Pero imaginemos ahora que por cualquier motivo las variables tienen
otro valor, y que por ejemplo b tiene el valor 0 . Si intentamos hacer la
división entre cero, este programa dará un error y su ejecución
terminará de manera abrupta.
a = 4; b = 0
print(a/b)
# ZeroDivisionError: division by zero
Entonces, lo que hay dentro del try es la sección del código que podría
lanzar la excepción que se está capturando en el except . Por lo tanto
cuando ocurra una excepción, se entra en el except pero el programa
no se para.
Uso de else
Al ya explicado try y except le podemos añadir un bloque más, el else .
Dicho bloque se ejecutará si no ha ocurrido ninguna excepción.
Fíjate en la diferencia entre los siguientes códigos.
try:
# Forzamos una excepción al dividir entre 0
x = 2/0
except:
print("Entra en except, ha ocurrido una excepción")
else:
print("Entra en else, no ha ocurrido ninguna excepción")
#Entra en except, ha ocurrido una excepción
Uso de finally
A los ya vistos bloques try , except y else podemos añadir un bloque
más, el finally . Dicho bloque se ejecuta siempre, haya o no haya
habido excepción.
Ejemplos
Un ejemplo muy típico de excepciones es en el manejo de ficheros.
Se intenta abrir, pero se captura una posible excepción. De hecho si
entras en la documentación de open se indica que OSError es lanzada
si el fichero no puede ser abierto.
# Se intenta abrir un fichero y se captura una posible excepción
try:
with open('fichero.txt') as file:
read_data = file.read()
except:
# Se entra aquí si no pudo ser abierto
print('No se pudo abrir')
try:
# Se fuerza excepción
x = 2/0
except:
print("Entra en except, ha ocurrido una excepción")
else:
print("Entra en el else, no ha ocurrido ninguna excepción")
finally:
print("Entra en finally, se ejecuta el bloque finally")