gcdoramas.com

Manejo de errores en Flask

Manejo de errores en Flask

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.