【问题标题】:Global Exception Handling in Google App EngineGoogle App Engine 中的全局异常处理
【发布时间】:2010-07-01 03:26:14
【问题描述】:

不是将我的整个代码封装在一个 try{} except{} 块中,有没有办法在全局范围内捕获异常?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果你正在使用另一个框架,你可以编写一个 WSGI 中间件来调用包装好的 WSGI 应用程序,并捕获任何抛出的异常,并按照你的意愿处理它们。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2013-09-09
          • 2011-05-16
          • 2016-11-03
          • 1970-01-01
          • 1970-01-01
          • 2019-07-18
          • 2017-02-24
          • 2011-05-20
          • 1970-01-01
          相关资源
          最近更新 更多