目次
- 1 1. Introducción al manejo de excepciones en Python
- 2 2. ¿Qué es la sentencia try-except?
- 3 3. Excepciones comunes y cómo manejarlas
- 4 4. Obtener detalles del error con objetos de excepción
- 5 5. Uso del bloque finally
- 6 6. Generar excepciones manualmente con raise
- 7 7. Buenas prácticas en el manejo de excepciones en Python
1. Introducción al manejo de excepciones en Python
¿Qué es el manejo de excepciones en Python?
Durante la ejecución de un programa, pueden ocurrir errores inesperados. A estos se les llama excepciones, y cuando ocurren normalmente el programa se detiene. En Python, existe un mecanismo llamado manejo de excepciones que permite controlar estos casos. Con él, el programa puede responder adecuadamente a los errores y continuar funcionando.¿Por qué es importante el manejo de excepciones?
El manejo de excepciones es esencial para que un programa siga siendo fácil de usar incluso cuando enfrenta errores. Además, ayuda a identificar la causa del problema y facilita la depuración, lo que permite crear programas más confiables.2. ¿Qué es la sentencia try-except
?
Sintaxis básica
La sentenciatry-except
en Python permite escribir en el bloque try
el código que podría generar un error, y definir en el bloque except
cómo manejarlo. La sintaxis básica es la siguiente:try:
# Código que podría generar un error
except SomeError:
# Código para manejar el error
Si el código dentro del bloque try
se ejecuta sin problemas, el bloque except
será ignorado. Sin embargo, si ocurre un error, se ejecutará la acción definida para esa excepción.Ejemplo común: error de división por cero
Al intentar dividir entre cero, se genera unZeroDivisionError
. Este error puede manejarse de la siguiente forma:try:
result = 10 / 0
except ZeroDivisionError:
print("No es posible dividir entre cero")

3. Excepciones comunes y cómo manejarlas
1. ZeroDivisionError
Esta excepción ocurre cuando se intenta dividir un número entre cero. Por ejemplo:try:
result = 10 / 0
except ZeroDivisionError:
print("No es posible dividir entre cero")
2. ValueError
El ValueError
ocurre cuando se proporciona un valor inapropiado a una función u operación. En este ejemplo, se intenta convertir a entero una cadena no numérica:try:
num = int("not_a_number")
except ValueError:
print("Valor inválido")
3. Manejo de múltiples excepciones
Cuando es necesario manejar varias excepciones al mismo tiempo, se pueden agrupar dentro de un mismo bloqueexcept
:try:
result = 10 / "string"
except (ZeroDivisionError, TypeError):
print("Se produjo un error")
4. Obtener detalles del error con objetos de excepción
Uso de as
para capturar el objeto de excepción
Con la palabra clave as
es posible capturar el objeto de excepción y acceder a información detallada del error, útil para mostrar o registrar en logs:try:
a = 10 / 0
except ZeroDivisionError as e:
print(f"Se produjo un error: {e}")
En este caso, la variable e
almacena el mensaje del error para poder mostrarlo.5. Uso del bloque finally
¿Qué es finally
?
El bloque finally
se ejecuta siempre, ocurra o no una excepción. Es especialmente útil para liberar recursos, como cerrar archivos o desconectar bases de datos.try:
file = open("test.txt", "r")
except FileNotFoundError:
print("Archivo no encontrado")
finally:
print("Finalizando operación con el archivo")
Liberación de recursos
finally
es muy útil para garantizar la liberación de recursos. Por ejemplo, cerrar un archivo de forma segura:try:
file = open("data.txt", "r")
# Operaciones con el archivo
finally:
file.close()
De esta forma, el archivo se cerrará siempre, aunque ocurra un error.6. Generar excepciones manualmente con raise
¿Cuál es el propósito de raise
?
La sentencia raise
permite lanzar excepciones de forma intencional. Esto es útil para validar entradas o forzar condiciones específicas.def check_value(value):
if value < 0:
raise ValueError("No se permiten valores negativos")
Ejemplo de excepción personalizada
Generar excepciones en condiciones específicas ayuda a evitar comportamientos inesperados y mejorar la seguridad del programa.
7. Buenas prácticas en el manejo de excepciones en Python
1. Evitar el uso excesivo de excepciones
El abuso del manejo de excepciones puede dificultar la lectura del código y la depuración. Se recomienda usarlas solo en los casos donde realmente sean necesarias.2. Registrar los errores en logs
Es recomendable registrar los mensajes de error con un sistema de logs. Esto facilita el análisis posterior de los problemas. Ejemplo con el módulologging
:import logging
try:
a = 10 / 0
except ZeroDivisionError as e:
logging.error(f"Se produjo un error: {e}")
3. Evitar el uso de except
demasiado general
Siempre es mejor capturar excepciones específicas. El uso de except Exception
de forma general puede ocultar detalles importantes del error. En su lugar, maneja cada excepción de manera individual.