Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ExceptionHandlerFilterAttribute : ExceptionFilterAttribute
- {
- private readonly ILogger _logger;
- public ExceptionHandlerFilterAttribute(ILogger<ExceptionHandlerFilterAttribute> logger)
- {
- _logger = logger;
- }
- public override void OnException(ExceptionContext context)
- {
- _logger.LogError(context.Exception, $"Error during {context.HttpContext.Request.Path}");
- if (!(context.Exception is IHasUserMessageException))
- {
- context.Result = new StatusCodeResult(StatusCodes.Status500InternalServerError);
- return;
- }
- switch (context.Exception)
- {
- case ValidationException e:
- context.Result = new BadRequestObjectResult(new { Success = false, ErrorMessage = e.Message});
- break;
- case HashCollisionException e:
- context.Result = new ConflictObjectResult(new { Success = false, ErrorMessage = e.Message });
- break;
- case InvalidMessageFormatException e:
- context.Result = new BadRequestObjectResult(new { Success = false, ErrorMessage = e.Message });
- break;
- case EventTimedOutValidationException e:
- context.Result = new BadRequestObjectResult(new { Success = false, ErrorMessage = e.Message });
- break;
- case InconsistentInputDataException e:
- context.Result = new BadRequestObjectResult(new { Success = false, ErrorMessage = e.Message });
- break;
- case UnauthorizedException e:
- context.Result = new ObjectResult(new { Success = false, ErrorMessage = e.Message }) { StatusCode = StatusCodes.Status401Unauthorized };
- break;
- default:
- context.Result = new BadRequestObjectResult(new { Success = false, ErrorMessage = context.Exception });
- break;
- }
- }
- }
- [Route("api/[controller]")]
- [ServiceFilter(typeof(ExceptionHandlerFilterAttribute))]
- public class EventsController : ControllerBase
- {......}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement