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 productionReporter 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>
@endsectionExceptions 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!