hotchocolate 11 : how to replace ExceptionMiddleware by my own middleware?

Viewed 165

Is it possible to replace the "official" ExceptionMiddleware HotChocolate classe by my own middleware classe?

I plan to "complete" the catch by including AgregationException .Net exception and create IError[] array by looping AgregationException.InnerExceptions property (see below the original ExceptionMiddleware).

I would like to replace it by my own implementation.

Is it possible ? How can I do this ?

Thanks.

Kind Regards

   internal sealed class ExceptionMiddleware
    {
        private readonly RequestDelegate _next;
        private readonly IErrorHandler _errorHandler;

        public ExceptionMiddleware(RequestDelegate next, IErrorHandler errorHandler)
        {
            _next = next ?? throw new ArgumentNullException(nameof(next));
            _errorHandler = errorHandler ?? throw new ArgumentNullException(nameof(errorHandler));
        }

        public async ValueTask InvokeAsync(IRequestContext context)
        {
            try
            {
                await _next(context).ConfigureAwait(false);
            }
            catch (GraphQLException ex)
            {
                context.Exception = ex;
                context.Result = QueryResultBuilder.CreateError(_errorHandler.Handle(ex.Errors));
            }
            catch (Exception ex)
            {
                context.Exception = ex;
                IError error = _errorHandler.CreateUnexpectedError(ex).Build();
                context.Result = QueryResultBuilder.CreateError(_errorHandler.Handle(error));
            }
        }
    }
0 Answers
Related