【问题标题】:what is error parameter in flask errorhandler烧瓶错误处理程序中的错误参数是什么
【发布时间】:2023-04-01 05:39:01
【问题描述】:

我有一个关于烧瓶错误处理程序的问题。 当我想处理 404 错误时,我使用以下代码:

@app.errorhandler(404)
def page_not_found(e):
    return render_template("404.html")

为什么我应该将 (e) 传递给函数? 谢谢! :)

【问题讨论】:

  • e 用于您的错误回溯。还有stackoverflow.com/questions/27760113/…
  • e 将保存引发异常的对象,因此您可以将其用于上下文信息,以提供返回失败的原因,或处理在你自己的逻辑中,你想对某些失败做什么。这在documentation 中有解释

标签: python web flask


【解决方案1】:

e 是引发的异常,触发要调用的处理程序。

您可以为多个错误代码注册相同的错误处理函数,并且可以使用传入的参数来准确确定调用它的错误或在通用模板中使用该代码:

@application.errorhandler(404)
@application.errorhandler(401)
@application.errorhandler(500)
def http_error_handler(error):
    return render_template("error.html", error=error)

来自Error Handlers documentation

错误处理程序是一个函数,就像一个视图函数,但是当错误发生时调用它并传递该错误

我的粗体强调

注意它是一个异常实例;对于 HTTP 错误代码,这将是 HTTPException class 的子类的一个实例(Werkzeug 定义了 several such subclasses)。如果您真的想匹配 HTTP 代码,此类实例具有 .code 属性:

if error.code == 404:
    # not found error

【讨论】:

    【解决方案2】:

    我猜它持有异常,所以如果你想返回它以知道出了什么问题。虽然我对此并不熟悉,或者如果它是父级,则可能需要为其提供一个参数来检查错误并正确处理它。

    【讨论】:

    • 这看起来不像是一个答案,它只是评论。
    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2021-03-31
    • 2018-07-26
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多