コード例 #1
0
        public void OnException(ExceptionContext context)
        {
            var exception = context.Exception;
            var request   = context.GetRequestPath();

            switch (exception)
            {
            case NaturalLangaugeInvalidUrlException naturalLangaugeInvalidUrlException:
            {
                var errorTitle       = "Invalid Url";
                var errorDescription = $"Invalid Url {naturalLangaugeInvalidUrlException.InvalidUrl}.";
                var errorResponse    = new ErrorResponse(request, HttpStatusCode.BadRequest, errorTitle, errorDescription);

                context.Result = new DevKnowledgeBookBadRequestObjectResult(errorResponse);
                _logger.LogError(naturalLangaugeInvalidUrlException, errorDescription);
                break;
            }

            case NoBookmarkExitsException noBookmarkExitsException:
            {
                var errorTitle       = "Bookmark exists";
                var errorDescription = $"Bookmark with url {noBookmarkExitsException.RequestUrl} already exits.";
                var errorResponse    = new ErrorResponse(request, HttpStatusCode.BadRequest, errorTitle, errorDescription);

                context.Result = new DevKnowledgeBookBadRequestObjectResult(errorResponse);
                _logger.LogError(noBookmarkExitsException, errorDescription);
                break;
            }

            default:
            {
                var errorTitle       = "Internal Server Error";
                var errorDescription = $"An unexpected error occurred.";
                var errorResponse    = new ErrorResponse(request, HttpStatusCode.InternalServerError, errorTitle, errorDescription);

                context.Result = new DevKnowledgeBookInternalServerResult(errorResponse);
                _logger.LogError(exception, errorDescription);
                break;
            }
            }
        }