Google App Engine中的全局异常处理

时间:2010-07-01 03:26:14

标签: python google-app-engine exception-handling global

不是将我的整个代码封装在try {}(除了{}块之外),而是在全球范围内捕获异常吗?

基本上我正在寻找一种方法来拥有一个全局异常处理程序,它将处理我为谷歌应用程序引擎编写的python应用程序中的所有未处理异常

3 个答案:

答案 0 :(得分:1)

如果您正在使用webapp框架,那么您应该已经定义了一个RequestHandler的子类,它充当基类,所有应用程序的处理程序都扩展了它。您可以简单地覆盖handle_exception,它可以作为任何未捕获异常的全局异常处理程序。

default implementation调用self.error(500),记录异常,如果打开调试,则输出堆栈跟踪。

如果您正在使用另一个框架,您可以编写一个WSGI中间件来调用包装的WSGI应用程序,并捕获任何抛出的异常,并根据需要处理它们。

答案 1 :(得分:0)

好吧,在最基本的层面上,你可以将app.yaml引用的所有处理程序脚本包装在一个巨大的try-except块中。

如果您使用的是webapp框架,请考虑为每个请求处理程序覆盖handle_exception()。如果您希望所有请求处理程序都有一些您指定的基本异常处理,那么您可以使用一个请求处理程序来实现此方法,然后从中派生所有处理程序。

答案 2 :(得分:0)

你的应用程序可能有一个main()函数,把try / except放在那个函数中,它会从你的应用程序中捕获所有内容。