namespace Webzine.WebApplication.Filters; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; /// /// Filtre d'exception global qui intercepte toute exception non gérée et la journalise automatiquement. /// public class GlobalExceptionFilter : IExceptionFilter { private readonly ILogger logger; /// /// Initializes a new instance of the class. /// /// Service de journalisation injecté. public GlobalExceptionFilter(ILogger logger) { this.logger = logger; } /// public void OnException(ExceptionContext context) { this.logger.LogError( context.Exception, "Erreur non gérée dans {Action} : {Message}", context.ActionDescriptor.DisplayName, context.Exception.Message); context.Result = new ObjectResult(new { erreur = "Une erreur inattendue est survenue.", detail = context.Exception.Message, }) { StatusCode = StatusCodes.Status500InternalServerError, }; context.ExceptionHandled = true; } }