Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

ExceptionHandler.cs 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System.Net;
  2. namespace BlackRock.Reporting.API.Exceptions
  3. {
  4. public class ExceptionHandler : IExceptionHandler
  5. {
  6. private readonly ILogger<ExceptionHandler> logger;
  7. public ExceptionHandler(ILogger<ExceptionHandler> logger)
  8. {
  9. this.logger = logger;
  10. }
  11. public Error HandleException(Exception exception)
  12. {
  13. var error = exception switch
  14. {
  15. DomainException domainException => HandleDomainException(domainException),
  16. ResourceNotFoundException resourceNotFoundException => HandleResourceNotFoundException(resourceNotFoundException)
  17. };
  18. return error;
  19. }
  20. private Error HandleResourceNotFoundException(ResourceNotFoundException resourceNotFoundException)
  21. {
  22. logger.LogInformation(resourceNotFoundException, resourceNotFoundException.Message);
  23. return
  24. new Error
  25. {
  26. Title = resourceNotFoundException.Message,
  27. StatusCode = HttpStatusCode.BadRequest
  28. };
  29. }
  30. private Error HandleDomainException(DomainException domainException)
  31. {
  32. logger.LogInformation(domainException, domainException.Message);
  33. return
  34. new Error
  35. {
  36. Title = domainException.Message,
  37. StatusCode = HttpStatusCode.BadRequest
  38. };
  39. }
  40. private Error HandleUnhandledException(Exception exception)
  41. {
  42. logger.LogInformation(exception, exception.Message);
  43. return
  44. new Error
  45. {
  46. Title = exception.Message,
  47. StatusCode = HttpStatusCode.InternalServerError
  48. };
  49. }
  50. }
  51. }