Module: GraphQL::Schema::CatchallMiddleware
- Defined in:
- lib/graphql/schema/catchall_middleware.rb
Overview
In early GraphQL versions, errors would be “automatically” rescued and replaced with ‘“Internal error”`. That behavior was undesirable but this middleware is offered for people who want to preserve it.
It has a couple of differences from the previous behavior:
-
Other parts of the query will be run (previously, execution would stop when the error was raised and the result would have no ‘“data”` key at all)
-
The entry in Query::Context#errors is a ExecutionError, not the originally-raised error.
-
The entry in the ‘“errors”` key includes the location of the field which raised the errors.
Constant Summary collapse
- MESSAGE =
"Internal error"
Class Method Summary collapse
-
.call(parent_type, parent_object, field_definition, field_args, query_context, next_middleware) ⇒ Object
Rescue any error and replace it with a ExecutionError whose message is MESSAGE.
Class Method Details
.call(parent_type, parent_object, field_definition, field_args, query_context, next_middleware) ⇒ Object
Rescue any error and replace it with a ExecutionError whose message is MESSAGE
27 28 29 30 31 |
# File 'lib/graphql/schema/catchall_middleware.rb', line 27 def self.call(parent_type, parent_object, field_definition, field_args, query_context, next_middleware) next_middleware.call rescue StandardError => err GraphQL::ExecutionError.new(MESSAGE) end |