Improve default InvalidNullError handling #5257
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #5239
InvalidNullError
was modeled as aRuntimeTypeError
but also implementedto_h
to act like anExecutionError
. It was a strange hybrid which made it harder for applications to change how the errors were handled.It also caused limitations such as not being easy to add
extensions
orpath
to the error in the response.This changes
InvalidNullError
to inherit from the baseGraphQL::Error
instead ofRuntimeTypeError
. Instead of adding the instance ofInvalidNullError
directly tocontext.errors
, the default implementation is changed to create a newExecutionError
instead.This provides a simpler middle ground where applications can still choose to handle
InvalidNullError
exceptions differently (such as reporting them to their exception handler app) but keep the proper spec compliant field error response.Note: assuming this solution is good, I'll rebase this after #5256