不是将我的整个代码封装在try {}(除了{}块之外),而是在全球范围内捕获异常吗?
基本上我正在寻找一种方法来拥有一个全局异常处理程序,它将处理我为谷歌应用程序引擎编写的python应用程序中的所有未处理异常
答案 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放在那个函数中,它会从你的应用程序中捕获所有内容。