Manejo de errores en Python con try, except, finally
Trabajar con errores es una parte esencial del desarrollo de software de calidad y confiable. Incluso los desarrolladores más experimentados no están exentos de que surjan errores durante la ejecución de un programa. Para evitar que estas situaciones provoquen el colapso total de la aplicación, Python ofrece potentes herramientas para el manejo de excepciones.
En esta guía, exploramos el uso correcto de las estructuras try, except y finally para crear código resistente a errores.
Fundamentos del manejo de excepciones en Python
¿Qué es el manejo de errores?
El manejo de errores en Python permite interceptar excepciones que ocurren durante la ejecución del programa. En lugar de que la aplicación termine abruptamente, el sistema ejecuta acciones específicas para gestionar correctamente la situación problemática.
Elementos clave del sistema de manejo de excepciones
El sistema de manejo de errores en Python se basa en tres bloques principales:
- try — bloque de código donde puede ocurrir una excepción
- except — bloque para manejar un tipo específico de error
- finally — bloque de código que se ejecuta independientemente del resultado
Estructura básica de la construcción try-except-finally
Sintaxis de la construcción principal
try:
# Código que puede lanzar una excepción
pass
except SpecificError:
# Código para manejar un error específico
pass
finally:
# Código que se ejecuta en cualquier caso
pass
Aplicación práctica de la estructura básica
try:
user_input = input("Ingresa un número: ")
number = int(user_input)
print(f"Ingresaste el número: {number}")
except ValueError:
print("Error: debes ingresar un número válido")
finally:
print("Operación finalizada")
Si la entrada es correcta, el programa mostrará el número ingresado. En caso de entrada incorrecta, se mostrará un mensaje de error. El bloque finally se ejecutará en cualquier escenario.
Manejo de diferentes tipos de excepciones
Manejo múltiple de errores
Python permite manejar diferentes tipos de excepciones usando varios bloques except:
try:
dividend = 10
divisor = 0
result = dividend / divisor
except ZeroDivisionError:
print("La división entre cero no está permitida")
except ValueError:
print("Se detectó un formato de datos incorrecto")
except TypeError:
print("Tipos de datos incompatibles para la operación")
finally:
print("Procesamiento de la operación matemática finalizado")
Manejo de errores sin bloque finally
El bloque finally no es obligatorio. Si está ausente, el programa maneja la excepción y continúa su ejecución:
try:
data_list = [1, 2, 3, 4, 5]
element = data_list[10] # Intento de acceder a un índice inexistente
except IndexError:
print("Intento de acceder a un índice fuera del rango de la lista")
Obtener información detallada sobre las excepciones
Uso de la palabra clave as
Para obtener información detallada sobre una excepción, se usa la construcción con la palabra clave as:
try:
calculation = 15 / 0
except ZeroDivisionError as error:
print(f"Se detectó un error: {error}")
print(f"Tipo de error: {type(error).__name__}")
Resultado de la ejecución:
Se detectó un error: division by zero
Tipo de error: ZeroDivisionError
Manejo universal de todas las excepciones
En algunos casos, es necesario interceptar cualquier posible excepción:
try:
potentially_risky_operation()
except Exception as error:
print(f"Ocurrió un error: {error}")