龙卷风错误处理

时间:2015-06-19 13:23:08

标签: tornado

如果我输入错误的网址E.g. localhost:8000/AFDADSFDKFADS,我希望能够处理更好的错误

我收到一条丑陋的python traceback消息,因为抛出了tornado.web.HTTPError异常。我知道我可以使用正则表达式捕获除了正确的URL之外的所有场景但是我认为必须有一种方法来处理Tornado中的这个错误。

我知道我可以在延长write_error()时使用tornado.web.RequestHandler,但由于此错误发生在tornado.web.Application课程中,我不知道如何处理它。 我认为这可能与班级tornado.web.ErrorHandler(application, request, **kwargs)有关,但我不确定。

也可以有人告诉我,如果我使用tornado.web.RequestHandler方法并执行raise KeyError或其他异常而没有捕获它,为什么write_error()没有被调用?似乎忽略了例外。

1 个答案:

答案 0 :(得分:11)

要提供自定义404页面,请创建一个调用self.set_status(404)的处理程序(除了生成您想要的任何输出外),并在default_handler_class构造函数关键字参数中将其设置为Application。 / p>

class My404Handler(RequestHandler):
    # Override prepare() instead of get() to cover all possible HTTP methods.
    def prepare(self):
        self.set_status(404)
        self.render("404.html")

app = Application(..., default_handler_class=My404Handler)

您可能不想使用ErrorHandler:它是一种返回指定状态代码的简单方法,但它并不能让您控制输出。