11 Les Bases de Laravel 11 : Gestion des Erreurs

Anis MarrouchiAI Bot
Par Anis Marrouchi & AI Bot ·

Chargement du lecteur de synthèse vocale...

Lorsque vous demarrez un nouveau projet Laravel, la gestion des erreurs et des exceptions est deja configuree pour vous. La classe App\Exceptions\Handler est l'endroit ou toutes les exceptions lancees par votre application sont enregistrees puis rendues a l'utilisateur.

Configuration

L'option debug dans votre fichier de configuration config/app.php determine la quantite d'informations sur une erreur qui est affichee a l'utilisateur. Par defaut, cette option est configuree pour respecter la valeur de la variable d'environnement APP_DEBUG:

APP_DEBUG=true  # Pour le developpement
APP_DEBUG=false # Pour la production

Reporter les Exceptions

Le reporting d'exceptions est utilise pour logger les exceptions ou les envoyer a un service externe comme Sentry ou Flare. Par defaut, les exceptions sont loggees selon votre configuration de logging.

// bootstrap/app.php
use App\Exceptions\InvalidOrderException;
 
->withExceptions(function (Exceptions $exceptions) {
    $exceptions->report(function (InvalidOrderException $e) {
        // Logique de reporting personnalisee
    });
})

Arreter le Reporting pour Certains Types

->withExceptions(function (Exceptions $exceptions) {
    $exceptions->dontReport([
        InvalidOrderException::class,
    ]);
})

Rendre les Exceptions

Par defaut, le gestionnaire d'exceptions Laravel convertira les exceptions en une reponse HTTP pour vous. Cependant, vous pouvez enregistrer une closure de rendu personnalisee pour les exceptions d'un type donne:

->withExceptions(function (Exceptions $exceptions) {
    $exceptions->render(function (InvalidOrderException $e, Request $request) {
        return response()->view('errors.invalid-order', [], 500);
    });
})

Reponses JSON pour l'API

->withExceptions(function (Exceptions $exceptions) {
    $exceptions->render(function (InvalidOrderException $e, Request $request) {
        if ($request->expectsJson()) {
            return response()->json([
                'error' => 'Commande invalide',
                'message' => $e->getMessage(),
            ], 500);
        }
    });
})

Exceptions HTTP

Certaines exceptions decrivent des codes d'erreur HTTP du serveur. Vous pouvez creer des reponses personnalisees pour des codes de statut HTTP specifiques:

abort(404);
abort(403, 'Non autorise');

Pages d'Erreur Personnalisees

Creez des vues personnalisees pour les pages d'erreur:

<!-- resources/views/errors/404.blade.php -->
@extends('layouts.app')
 
@section('content')
    <h1>Page Non Trouvee</h1>
    <p>Desole, la page que vous recherchez n existe pas.</p>
@endsection

Exceptions de Validation

Quand la validation echoue, Laravel lance automatiquement une ValidationException:

$validated = $request->validate([
    'email' => 'required|email',
    'password' => 'required|min:8',
]);

En savoir plus sur la gestion des erreurs dans Laravel depuis la documentation officielle.

Conclusion

La gestion des erreurs dans Laravel fournit une maniere elegante et unifiee de gerer les exceptions dans votre application. En personnalisant le gestionnaire d'exceptions, vous pouvez controler comment les erreurs sont reportees et rendues aux utilisateurs.

Bon codage avec Laravel 11!


Vous voulez lire plus de tutoriels? Découvrez notre dernier tutoriel sur Utiliser les dictionnaires de prononciation avec le SDK ElevenLabs.

Discutez de votre projet avec nous

Nous sommes ici pour vous aider avec vos besoins en développement Web. Planifiez un appel pour discuter de votre projet et comment nous pouvons vous aider.

Trouvons les meilleures solutions pour vos besoins.

Articles connexes

10 Les Bases de Laravel 11 : Bundling d'Assets

Apprenez les essentiels du bundling d'assets dans Laravel 11 avec Vite, couvrant l'installation, la configuration et des exemples pratiques pour le developpement web.

10 min read·

9 Les Bases de Laravel 11 : Templates Blade

Apprenez les essentiels des Templates Blade dans Laravel 11, en vous concentrant sur les fonctionnalites cles et des exemples pratiques pour ameliorer vos competences en developpement web.

10 min read·