Google App Engine中的全局异常处理

2 投票
3 回答
1121 浏览
提问于 2025-04-16 00:39

我不想把我的所有代码都放在try{} except{}这个块里,有没有办法可以全局捕捉异常呢?

简单来说,我想要一个全局的异常处理器,能够处理我在为谷歌应用引擎写的Python应用中所有未处理的异常。

3 个回答

0

好吧,最简单的说法就是你可以把在app.yaml里提到的所有处理脚本都放在一个大的try-except块里。

如果你在使用webapp框架,可以考虑为每个请求处理器重写一下handle_exception()这个方法。如果你想让所有的请求处理器都有一些你指定的基本异常处理,你可以先写一个实现了这个方法的请求处理器,然后让所有的处理器都从这个处理器继承。

0

你的应用程序可能有一个 main() 函数,把 try/except 放在这个函数里,就能捕捉到你应用程序里发生的所有错误。

1

如果你在使用这个网页应用框架,你应该已经定义了一个叫做RequestHandler的子类,作为基础类,所有你应用里的处理器都应该继承这个类。你只需要重写一下handle_exception方法,这个方法可以作为一个全局的异常处理器,用来处理任何未捕获的异常。

这个默认实现会调用self.error(500),记录下异常信息,如果开启了调试模式,还会输出一个堆栈跟踪信息。

如果你使用的是其他框架,你可以写一段WSGI中间件,这段中间件会调用被包装的WSGI应用,并捕获任何抛出的异常,按照你的需求来处理这些异常。

撰写回答