2010-07-01 3 views
2

Au lieu d'encapsuler tout mon code dans un bloc try {} except {}, existe-t-il des exceptions globales?Gestion des exceptions globales dans Google App Engine

Fondamentalement, je suis à la recherche d'un moyen d'avoir un gestionnaire global d'exception qui se chargera de toutes les exceptions non gérées dans la ma demande de python écrit pour Google App Engine

Répondre

1

Si vous utilisez le framework webapp, vous devez déjà définir une sous-classe de RequestHandler qui sert de classe de base, avec tous les gestionnaires de votre application l'étendant. Vous pouvez simplement remplacer handle_exception, qui sert de gestionnaire d'exception global pour les exceptions non interceptées.

Le default implementation appelle self.error (500), enregistre l'exception et, si le débogage est activé, génère une pile de traces. Si vous utilisez un autre framework, vous pouvez écrire un middleware WSGI qui appelle l'application WSGI encapsulée et récupérer toutes les exceptions lancées, en les traitant comme vous le souhaitez.

0

Eh bien, au niveau le plus élémentaire, vous pouvez envelopper tous vos scripts de gestionnaire référencés par app.yaml dans un bloc try-except géant. Si vous utilisez la structure webapp, envisagez de remplacer handle_exception() pour chacun de vos gestionnaires de requêtes. Si vous voulez que tous vos gestionnaires de requêtes aient une gestion des exceptions de base que vous spécifiez, vous pouvez utiliser un gestionnaire de requêtes qui implémente cette méthode et en déduit tous vos gestionnaires.

0

Votre application a probablement une fonction main(), placez le try/except dans cette fonction, et il va tout attraper de votre application.