graphql-python / graphql-python/graphql-core-legacy
Catching exceptions
- Vorherrschende Sprache
- Python
- Sterne
- 372
- Forks
- 175
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Using Graphene with graphql-core 2.0, I was able to write middleware that would catch errors:
```py
class ErrorHandlerMiddleware():
def resolve(self, next, root, info, **args):
try:
return next(root, info, **args)
except Exception as ex:
# log error with Sentry
info.context.sentry.captureException()
# Return a generic rejection
return GraphQLError("System error. Please try again later.")
```
It wasn't perfect. _Both_ the original exception and GraphQLError would wind up appearing as Sentry issues, but it'd at least get reported and send back a generic error to the user.
I've since bumped graphql-core to 2.1 to take advantage of the logging improvements, but I'm not clear on how the above could be achieved in 2.1? With the latest version, the original exception winds up in the `message` field of the response... potentially exposing sensitive info, like SQL errors, etc.
Could you please post an example in the README of how one might write middleware or use the new logging set-up to capture errors and replace the response with a generic message? I think that would be a really common use-case that many would find useful.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Start by reviewing the README's error-handling guidance and the graphql-core 2.1 logging and middleware behavior described by the issue. Document a supported example that captures exceptions and returns a generic response without exposing sensitive details; done when the README explains the setup and expected response.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- api, documentation
- Issue-Typ
- Dokumentation
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100