Edit in GitHubLog an issue

Exception handling

The WebApi module has an implementation to "mask" LocalizedExceptions so they aren't exposed to the client. GraphQL accomplishes this by restricting verbose output to only those exceptions implementing \GraphQL\Error\ClientAware, and only if the system is in developer mode. In these circumstances, the application returns a full stack trace. Otherwise, the application writes these exceptions to the system exception.log file while returning an "internal server error" to the client.

You should implement the \GraphQL\Error\ClientAware interface to handle errors in your module that are directly related to a GraphQL field having an anticipated exception. If you don't, the client will not receive useful messages. However, you should ensure that you don't implement the ClientAware interface for too many exceptions. Doing this risks exposing sensitive data to the client.

Adobe Commerce and Magento Open Source provide the following exception classes in Magento\Framework\GraphQl\Exception.

ClassException categoryDescription
GraphQlAlreadyExistsException
graphql-already-exists
Thrown when data already exists
GraphQlAuthenticationException
graphql-authentication
Thrown when an authentication fails
GraphQlAuthorizationException
graphql-authorization
Thrown when an authorization error occurs
GraphQlInputException
graphql-input
Thrown when a query contains invalid input
GraphQlNoSuchEntityException
graphql-no-such-entity
Thrown when an expected resource doesn't exist
  • Privacy
  • Terms of Use
  • Do not sell or share my personal information
  • AdChoices
Copyright © 2024 Adobe. All rights reserved.