Manejo de errores en Python
Muchas veces pueden darse condiciones en las que exista la posibilidad de que surja un error y nos interrumpa la ejecución del código. Esto puede darse por diferentes motivos, como ingresar mal un nombre de archivo a buscar y que este no exista, problemas de conexión momentáneos en la red y un muy extenso etcétera. Afortunadamente, en Python podemos controlar lo que sucede en caso de devolver un error y así evitar que el programa entero termine a causa de este.
Primero vamos a revisar los tipos de errores más comunes y lo que estos significan:
Error | Descripción | |
---|---|---|
1 | ZeroDivisionError | Se presenta cuando se intenta dividir un número por cero. |
2 | ImportError | Se produce cuando intentas importar la libería que no está instalada o has provisto mal del nombre. |
3 | IndexError | Aparece cuando el index no es encontrado en la secuencia. Por ejemplo, si la longitud de la lista es de 10 elementos y estás intentando acceder al índice decimo primero. |
4 | IdentationError | Cuando la identación no es especificada correctamente. |
5 | ValueError | Cuando la función integrada para un tipo de datos tiene el tipo correcto de argumentos, pero los argumentos tienen valores incorrectos especificados. |
6 | Exception | La clase base para todas las exceptiones. Si no estás seguro de que tipo de error puede ocurrir puedes usar esta clase base. |
7 | Type Error | Ocurre cuando un tipo incorrecto de función u operación es aplicada a un objeto. |
De esta manera, si por ejemplo el usuario ingresa mal una palabra por la cual se filtrará el resultado de la base de datos o esta no existe, podemos desviar el flujo de nuestro programa en una nueva dirección.
El manejo de errores en Python funciona muy similar a la estructura condicional IF, utilizando el segmento de código TRY para declarar qué código queremos intentar ejecutar, seguido del segmento EXCEPT para especificar nuestro plan B en caso de que el código falle o se encuentre algún error inesperado:
try:
resultado = 10 + '30'
print(resultado)
except:
print('Parece que hubo un error')
Tenemos la posibilidad de cambiar el nombre del error por un alias para facilitar su identificación o para avisarnos en que parte del código se produjo el error:
try:
print (idiomas)
except NameError as e:
print ("Ha ocurrido un error.")
finally:
# finally es opcional.
print ("Salida impresa correctamente!")
Algo sumamente interesante que puede sernos de gran utilidad, es la posibilidad de generar errores adrede:
def imprimir_cinco_elementos(datos):
if len(datos) !=5:
raise ValueError("El argumento debe tener cinco elementos")
for item in datos:
print (item)
lista1 = [5,2]
imprimir_cinco_elementos(lista1)
Gracias a esto, podemos advertirle al usuario sobre una mala operación del programa o sobre condiciones que pueden hacer que el código no funcione directamente. El mismo podrá ver qué es lo que hizo mal e intentar la operación nuevamente corrigiendo la información ingresada.