如果我输入错误的网址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()
没有被调用?似乎忽略了例外。
答案 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
:它是一种返回指定状态代码的简单方法,但它并不能让您控制输出。