Error Handling
Handle GraphQL errors gracefully in your application.
Error Structureβ
{
"data": null,
"errors": [
{
"message": "Field 'nonexistent_field' not found in type 'atoms'",
"extensions": {
"path": "$.selectionSet.atoms.selectionSet.nonexistent_field",
"code": "validation-failed"
}
}
]
}
Error Typesβ
- validation-failed: Query syntax or schema validation error
- constraint-violation: Database constraint violated
- unexpected: Internal server error
Best Practiceβ
import { GraphQLClient, ClientError } from 'graphql-request'
try {
const data = await client.request(query, variables)
console.log('Success:', data)
} catch (error) {
if (error instanceof ClientError) {
console.error('GraphQL errors:', error.response.errors)
console.error('Status:', error.response.status)
} else {
console.error('Network error:', error)
}
}
Tipsβ
- Check errors array: GraphQL can return partial data with errors
- Log error details: Include query and variables for debugging
- Show user-friendly messages: Don't expose internal errors
- Implement retry logic: For network failures