AppEngine错误处理

时间:2012-11-14 13:55:12

标签: google-app-engine

所有

有没有办法从处理程序中错误退出/退出执行?例如,如果传入请求不包含正确的标头,我们要发送400并退出/关闭连接。但是,无论何时我们在执行之后使用self.error(400)self.response.set_status(400)任何其他代码,例如:

class MyPastaHandler(webapp2.Handler):
   def get():
      if not self.request.headers.get('My-Custom-Header'):
         self.error(400)
      ...
      [more code]
      self.response.out.write('{"success": "true"}')

当我提交一个没有上述自定义标题的请求时,我得到了400,但我也在响应正文中获得了成功json,这告诉我self.error(400)不会停止执行并且self.response.set_status(400)都没有。

所以,问题是,是否有可能从处理程序中逐字出错?

2 个答案:

答案 0 :(得分:0)

事实证明,有一种简单的方法可以在400(或任何自定义错误)之后退出。正如TheFluff在AppEngine IRC频道中所描述的那样,在self.error(400)之后,一个简单的,老式的空return就可以了。

答案 1 :(得分:0)

在webapp2中,abort()是引发HTTP异常的快捷方式:http://webapp-improved.appspot.com/guide/exceptions.html#abort