首页   注册   登录
 lenbias34 最近的时间轴更新

lenbias34

V2EX 第 186681 号会员,加入于 2016-08-12 15:48:54 +08:00
lenbias34 最近回复了
2016-08-13 00:36:06 +08:00
回复了 mgna17 创建的主题 Tornado 问一个关于 tornado 异常处理的新手问题
说白了 404 错误就是路由不匹配,
我们看 tornado 源码文件 web.py 中有 Application 类中的__call__方法中有:
if not handler:
handler = ErrorHandler(self, request, status_code=404)
也就是所有错误的路由( 404 )将统一由 ErrorHandler 来处理, 再看看 ErrorHandler 的源码定义:
class ErrorHandler(RequestHandler):
"""Generates an error response with status_code for all requests."""
def initialize(self, status_code):
self.set_status(status_code)

def prepare(self):
raise HTTPError(self._status_code)

可以看到 ErrorHandler 继承自 RequestHandler 而并非你自定义的 BaseHandler 类
所以即使你在 BaseHandler 中定义了 write_error 方法, ErrorHandler 中也不会有 write_error 的处理逻辑

PS :自定义的 write_error 逻辑将在请求路由存在, 但请求方法错误时被调用
比如,就拿你的代码来说: 如果你向 '/' 发出 POST 请求( curl -X POST http://localhost:8000/ ),就会返回 Func write_error !错误
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   982 人在线   最高记录 4385   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 8ms · UTC 18:57 · PVG 02:57 · LAX 11:57 · JFK 14:57
♥ Do have faith in what you're doing.
沪ICP备16043287号-1