@@ -376,12 +376,12 @@ ExecuteSelectionSet(selectionSet, objectType, objectValue, variableValues):
376376Note: {resultMap} is ordered by which fields appear first in the operation. This
377377is explained in greater detail in the Field Collection section below.
378378
379+ ** Errors and Non-Null Types**
380+
379381<a name =" sec-Executing-Selection-Sets.Errors-and-Non-Null-Fields " >
380- <!-- This link exists for legacy hyperlink support -->
382+ <!-- Legacy link, this section was previously titled "Errors and Non-Null Fields" -->
381383</a >
382384
383- ** Errors and Non-Null Types**
384-
385385If during {ExecuteSelectionSet()} a _ response position_ with a non-null type
386386raises an _ execution error_ then that error must propagate to the parent
387387response position (the entire selection set in the case of a field, or the
@@ -626,9 +626,6 @@ the type system to have a specific input type.
626626At each argument position in an operation may be a literal {Value}, or a
627627{Variable} to be provided at runtime.
628628
629- Any _ request error_ raised during {CoerceArgumentValues()} should be treated
630- instead as an _ execution error_ .
631-
632629CoerceArgumentValues(objectType, field, variableValues):
633630
634631- Let {coercedValues} be an empty unordered Map.
@@ -672,6 +669,9 @@ CoerceArgumentValues(objectType, field, variableValues):
672669 {coercedValue}.
673670- Return {coercedValues}.
674671
672+ Any _ request error_ raised as a result of input coercion during
673+ {CoerceArgumentValues()} should be treated instead as an _ execution error_ .
674+
675675Note: Variable values are not coerced because they are expected to be coerced
676676before executing the operation in {CoerceVariableValues()}, and valid operations
677677must only allow usage of variables of appropriate types.
@@ -807,45 +807,45 @@ MergeSelectionSets(fields):
807807 - Append all selections in {fieldSelectionSet} to {selectionSet}.
808808- Return {selectionSet}.
809809
810+ ### Handling Execution Errors
811+
810812<a name =" sec-Handling-Field-Errors " >
811- <!-- This link exists for legacy hyperlink support -->
813+ <!-- Legacy link, this section was previously titled "Handling Execution Errors" -->
812814</a >
813815
814- ### Handling Execution Errors
815-
816- An _ execution error_ is an error raised from a particular field during value
817- resolution or coercion. While these errors should be reported in the response,
818- they are "handled" by producing a partial response.
816+ An _ execution error_ is an error raised during field execution, value resolution
817+ or coercion, at a specific _ response position_ . While these errors should be
818+ reported in the response, they are "handled" by producing a partial response.
819819
820820Note: This is distinct from a _ request error_ which results in a response with
821821no data.
822822
823823If an execution error is raised while resolving a field (either directly or
824- nested inside any lists), it is handled as though the position at which the
825- error occurred resulted in {null}, and the error must be added to the {"errors"}
826- list in the response.
824+ nested inside any lists), it is handled as though the _ response position _ at
825+ which the error occurred resolved to {null}, and the error must be added to the
826+ {"errors"} list in the response.
827827
828828If the result of resolving a _ response position_ is {null} (either due to the
829829result of {ResolveFieldValue()} or because an execution error was raised), and
830830that position is of a ` Non-Null ` type, then an execution error is raised at that
831831position. The error must be added to the {"errors"} list in the response.
832832
833- If a _ response position_ returns {null} because of an execution error which has
834- already been added to the {"errors"} list in the response, the {"errors"} list
835- must not be further affected. That is, only one error should be added to the
836- errors list per _ response position_ .
833+ If a _ response position_ resolves to {null} because of an execution error which
834+ has already been added to the {"errors"} list in the response, the {"errors"}
835+ list must not be further affected. That is, only one error should be added to
836+ the errors list per _ response position_ .
837837
838838Since ` Non-Null ` response positions cannot be {null}, execution errors are
839839propagated to be handled by the parent _ response position_ . If the parent
840840response position may be {null} then it resolves to {null}, otherwise if it is a
841841` Non-Null ` type, the execution error is further propagated to its parent
842842_ response position_ .
843843
844- If a ` List ` type wraps a ` Non-Null ` type, and one of the elements of that list
845- resolves to {null}, then the entire list must resolve to {null}. If the ` List `
846- type is also wrapped in a ` Non-Null ` , the execution error continues to propagate
847- upwards.
844+ If a ` List ` type wraps a ` Non-Null ` type, and one of the _ response position _
845+ elements of that list resolves to {null}, then the entire list _ response
846+ position _ must resolve to {null}. If the ` List ` type is also wrapped in a
847+ ` Non-Null ` , the execution error continues to propagate upwards.
848848
849849If every _ response position_ from the root of the request to the source of the
850- execution error returns a ` Non-Null ` type, then the {"data"} entry in the
851- response should be {null}.
850+ execution error has a ` Non-Null ` type, then the {"data"} entry in the response
851+ should be {null}.
0 commit comments