New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GraphService errors should throw a ShopifyGraphResultException #1031
Comments
I've been caught by this as well. However, if this new exception type doesn't inherit from I wanted to catch Shopify internal error. I solved it with a simple extension.
I'm curious under what scenario you need to filter for specific |
My point of view: GraphQl Error example: {
"errors": [
{
"message": "Query cost is 2003, which exceeds the single query max cost limit (1000).See https://shopify.dev/concepts/about-apis/rate-limits for more information on how thecost of a query is calculated.To query larger amounts of data with fewer limits, bulk operations should be used instead.See https://shopify.dev/tutorials/perform-bulk-operations-with-admin-api for usage details.",
"extensions": {
"code": "MAX_COST_EXCEEDED",
"cost": 2003,
"maxCost": 1000,
"documentation": "https://shopify.dev/api/usage/rate-limits"
}
}
]
} The proper way to handle would be to catch try
{
...
}
catch (ShopifyException exception)
{
if (exception is ShopifyHttpException httpException)
{
//use httpException variable which will be casted to ShopifyHttpException
}
else if (exception is ShopifyGraphResultException graphqlException)
{
//use graphqlException variable which will be casted to ShopifyGraphResultException
}
} Not sure how you both feel about this moving forward. This can be treated as a breaking change if people are just using |
Maybe the following hierarchy would be appropriate?
|
Hi @clement911, I have two questions:
I would try to keep the hierarchy simple, but that's just my opinion. I want to understand better your point of view in case I'm missing something. |
|
Thanks, @clement911.
In summary, the hierarchy I see is:
Anyways, you guys have done an excellent job with the library, I just wanted to add my 2 cents. |
Right now the GraphService will throw a
ShopifyHttpException
if a response has errors. However, this can cause confusion because all graph responses return200 OK
, but the exception type has anHttpStatus
property on it. If you're guarding for e.g. certain permission errors by checking the status code, your guard will always miss. In 7.0, the GraphService should throw a unique graph exception that does not inherit from the http exception.The text was updated successfully, but these errors were encountered: