using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; namespace Backend.Middleware; public sealed class GlobalExceptionFilter : IExceptionFilter { private readonly ILogger _logger; public GlobalExceptionFilter(ILogger logger) { _logger = logger; } public void OnException(ExceptionContext context) { _logger.LogError(context.Exception, "Unhandled exception on {Method} {Path}", context.HttpContext.Request.Method, context.HttpContext.Request.Path); if (context.Exception is ArgumentException) { context.Result = new BadRequestObjectResult(context.Exception.Message); context.ExceptionHandled = true; return; } context.Result = new ObjectResult(new { error = context.Exception.ToString() }) { StatusCode = 500 }; context.ExceptionHandled = true; } }