龙卷风错误处理
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 指定状态代码的简单方法,但它不会让您控制输出。
我希望能够处理在我输入不正确的 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 指定状态代码的简单方法,但它不会让您控制输出。