Gestion des erreurs (Flask)

Dans Flask, la gestion des erreurs consiste à intercepter et traiter les situations où une requête ne peut pas être exécutée correctement.
Cela permet de contrôler la réponse envoyée au client, plutôt que de laisser Flask renvoyer un message d’erreur brut.


Comment ça fonctionne dans Flask

Déclencher une erreur

Définir un gestionnaire d’erreurs personnalisé

Codes HTTP courants


Exemple conceptuel


Bonnes pratiques


Pourquoi c’est important


En résumé

Fonctions :

  • Gestion des erreurs dans Flask (exemple)

    Exemple de code :

    from flask import Flask, jsonify, render_template
    
    app = Flask(__name__)
    
    # 1️⃣ Route d'accueil
    @app.route("/")
    def home():
        return "Bienvenue sur la page d'accueil !"
    
    
    # 2️⃣ Route qui provoque volontairement une erreur
    @app.route("/divide/<int:x>/<int:y>")
    def divide(x, y):
        if y == 0:
            # lever une erreur personnalisée
            return jsonify({"error": "Division par zéro interdite"}), 400
        return jsonify({"result": x / y})
    
    
    # 3️⃣ Gestion d'une erreur 404 (page non trouvée)
    @app.errorhandler(404)
    def page_not_found(e):
        return "<h1>Erreur 404</h1><p>La page demandée n'existe pas.</p>", 404
    
    
    # 4️⃣ Gestion d'une erreur 500 (erreur serveur)
    @app.errorhandler(500)
    def internal_error(e):
        return "<h1>Erreur 500</h1><p>Une erreur interne est survenue.</p>", 500
    
    
    if __name__ == "__main__":
        app.run(debug=True)

    Explication du code :

    from flask import Flask, jsonify, render_template importe la classe Flask pour créer l’application web, jsonify pour générer des réponses JSON, et render_template (non utilisé ici mais pratique si on veut renvoyer des pages HTML avec Jinja2).

    app = Flask(__name__) crée une instance de l’application Flask.

    1️⃣ Route d’accueil

    @app.route("/") définit la page d’accueil de l’application.
    La fonction home() retourne une simple chaîne de caractères affichée par le navigateur.

    2️⃣ Route qui provoque une erreur personnalisée

    @app.route("/divide/<int:x>/<int:y>") définit une route qui prend deux nombres en paramètres (x et y).
    La fonction divide() divise x par y et retourne le résultat au format JSON.

    • Si y est différent de zéro, la division est effectuée et la réponse est {"result": valeur}.
    • Si y == 0, on retourne une réponse JSON avec un message d’erreur et un code HTTP 400 (Bad Request).
    3️⃣ Gestion de l’erreur 404 (page non trouvée)

    @app.errorhandler(404) définit une fonction qui sera appelée automatiquement lorsqu’un utilisateur accède à une page inexistante.
    La fonction page_not_found(e) retourne une page HTML simple avec un titre Erreur 404 et un code HTTP 404.

    4️⃣ Gestion de l’erreur 500 (erreur serveur)

    @app.errorhandler(500) définit une fonction exécutée lorsqu’une erreur interne survient dans l’application.
    La fonction internal_error(e) retourne une page HTML avec le message Erreur 500 et un code HTTP 500.

    5️⃣ Lancer l’application Flask

    if __name__ == "__main__": vérifie que le fichier est exécuté directement et non importé comme module.

    app.run(debug=True) lance le serveur local Flask en mode debug, ce qui permet de voir les erreurs détaillées et de recharger automatiquement l’application après chaque modification.