龙卷风错误处理

Tornado Error Handling

我希望能够处理在我输入不正确的 URL E.g. localhost:8000/AFDADSFDKFADS

时显示的更好的错误

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

我知道我可以在扩展 tornado.web.RequestHandler 时使用 write_error() 但是因为这个错误发生在 tornado.web.Application class 我不知道如何处理它。 我认为这可能与 class tornado.web.ErrorHandler(application, request, **kwargs) 有关,但我不确定。

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

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

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:这是 return 指定状态代码的简单方法,但它不会让您控制输出。