lenbias34 最近的时间轴更新
lenbias34

lenbias34

V2EX 第 186681 号会员,加入于 2016-08-12 15:48:54 +08:00
lenbias34 最近回复了
Zig 感觉还不错. 超级低成本的 intercorp with C(可以在 zig 代码中直接使用 C header 文件); comptime 是一个设计亮点; 还有丰富的交叉编译; 可以编译出很小很小的二进制文件, 这一点国外有好多搞嵌入式开发的都从 Rust 转到 Zig
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 !错误
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1232 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 23:23 · PVG 07:23 · LAX 15:23 · JFK 18:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.