所有
有没有办法从处理程序中错误退出/退出执行?例如,如果传入请求不包含正确的标头,我们要发送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)
都没有。
所以,问题是,是否有可能从处理程序中逐字出错?
答案 0 :(得分:0)
事实证明,有一种简单的方法可以在400(或任何自定义错误)之后退出。正如TheFluff在AppEngine IRC频道中所描述的那样,在self.error(400)之后,一个简单的,老式的空return
就可以了。
答案 1 :(得分:0)
在webapp2中,abort()是引发HTTP异常的快捷方式:http://webapp-improved.appspot.com/guide/exceptions.html#abort