Manejo de errores en Flask: guía completa
¿Por qué es importante manejar errores?
En cualquier aplicación web pueden ocurrir errores:
Rutas que no existen (404)
Problemas del servidor (500)
Datos inválidos enviados por el usuario
Si no manejas estos errores, el usuario verá mensajes confusos o páginas poco profesionales.
Tipos de errores comunes
Error 404 (No encontrado)
Ocurre cuando el usuario intenta acceder a una ruta que no existe:
/pagina-que-no-existe
Error 500 (Error interno del servidor)
Sucede cuando algo falla en tu código:
Error en la base de datos
Variables mal definidas
Excepciones no controladas
Manejar errores con Flask
Flask permite definir páginas personalizadas para errores.
Ejemplo: error 404
from flask import Flask, render_template
app = Flask(__name__)
@app.errorhandler(404)
def pagina_no_encontrada(error):
return render_template("404.html"), 404
Ejemplo: error 500
@app.errorhandler(500)
def error_servidor(error):
return render_template("500.html"), 500
Crear páginas de error
templates/404.html
404 - Página no encontrada
La página que buscas no existe.
Volver al inicio
templates/500.html
500 - Error del servidor
Ocurrió un error inesperado.
Manejo de excepciones (try/except)
Puedes controlar errores directamente en tu lógica:
@app.route("/usuarios")
def usuarios():
try:
conn = get_connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM usuarios")
datos = cursor.fetchall()
conn.close()
return str(datos)
except Exception as e:
return f"Error: {str(e)}"
Manejo de errores en APIs (JSON)
Si trabajas con APIs, devuelve errores en formato JSON:
from flask import jsonify
@app.errorhandler(404)
def error_404(error):
return jsonify({"error": "Ruta no encontrada"}), 404
Registrar errores (logging)
Para producción, es clave registrar errores:
import logging
logging.basicConfig(filename='errores.log', level=logging.ERROR)
try:
1 / 0
except Exception as e:
logging.error(str(e))
Esto guarda errores en un archivo para revisarlos después.
Buenas prácticas
Para un manejo profesional de errores:
No muestres errores técnicos al usuario final
Usa páginas personalizadas (404, 500)
Registra errores en logs
Usa try/except en operaciones críticas
Devuelve códigos HTTP correctos
Errores comunes
No manejar excepciones
Mostrar errores sensibles (como SQL o rutas internas)
No registrar errores
Dejar mensajes genéricos poco útiles
Modo debug (solo desarrollo)
app.run(debug=True)
⚠️ Nunca uses debug=True en producción, ya que expone información sensible.
Conclusión
El manejo de errores en Flask no es opcional si quieres una aplicación profesional. Mejora la experiencia del usuario, facilita el mantenimiento y hace tu sistema más seguro.