Flask 中如何使用 `errorhandler` 装饰器?

推荐答案

在 Flask 中,errorhandler 装饰器用于注册一个错误处理函数,当特定的 HTTP 错误发生时,Flask 会调用该函数来处理错误并返回自定义的响应。以下是如何使用 errorhandler 装饰器的示例:

-- -------------------- ---- -------
---- ----- ------ ------ -------

--- - ---------------

----------------------
--- ----------------------
    ------ ----------------- ----- --- --------- ---

----------------------
--- -----------------------------
    ------ ----------------- --------- ------ --------- ---

-- -------- -- -----------
    ---------

在这个示例中,我们定义了两个错误处理函数:page_not_foundinternal_server_error。它们分别处理 404 和 500 错误,并返回 JSON 格式的错误信息。

本题详细解读

1. errorhandler 装饰器的作用

errorhandler 装饰器用于注册一个错误处理函数,当特定的 HTTP 错误发生时,Flask 会调用该函数来处理错误并返回自定义的响应。这个装饰器可以接受一个 HTTP 错误代码作为参数,例如 404500

2. 错误处理函数的定义

错误处理函数通常接受一个参数 error,该参数是一个异常对象,包含了错误的详细信息。在函数内部,你可以根据需要返回自定义的响应。常见的做法是返回一个 JSON 格式的错误信息,并指定相应的 HTTP 状态码。

3. 示例代码解析

  • @app.errorhandler(404):注册一个处理 404 错误的函数 page_not_found。当用户访问一个不存在的页面时,Flask 会调用这个函数,并返回一个 JSON 格式的错误信息。

  • @app.errorhandler(500):注册一个处理 500 错误的函数 internal_server_error。当服务器内部发生错误时,Flask 会调用这个函数,并返回一个 JSON 格式的错误信息。

  • jsonify({"error": "Page not found"}), 404:返回一个 JSON 格式的错误信息,并指定 HTTP 状态码为 404。

  • jsonify({"error": "Internal server error"}), 500:返回一个 JSON 格式的错误信息,并指定 HTTP 状态码为 500。

4. 运行示例

运行上述代码后,当访问一个不存在的页面时,服务器会返回如下响应:

当服务器内部发生错误时,服务器会返回如下响应:

通过这种方式,你可以为不同的 HTTP 错误提供自定义的错误处理逻辑,从而提升用户体验。

纠错
反馈