Flask/Python:用户定义异常的错误处理程序
我使用Flask/Python制作了一个简单的web应用程序。我有一个用户定义的异常,我正在使用它来尝试捕获代码中的异常。但是,我想为用户定义的异常显示一个自定义错误页面。在Flask中,我读到您必须使用Flask/Python:用户定义异常的错误处理程序,python,flask,exception-handling,Python,Flask,Exception Handling,我使用Flask/Python制作了一个简单的web应用程序。我有一个用户定义的异常,我正在使用它来尝试捕获代码中的异常。但是,我想为用户定义的异常显示一个自定义错误页面。在Flask中,我读到您必须使用@errorhandler装饰器 我读到的很多例子都是这样的: @app.errorhandler(Exception) #some code 我的问题是,@app.errorhandler后面的括号中具体是什么?是否传入已定义的异常类的名称?我在线阅读的示例中没有一个实际说明括号之间的内容,
@errorhandler
装饰器
我读到的很多例子都是这样的:
@app.errorhandler(Exception)
#some code
我的问题是,@app.errorhandler
后面的括号中具体是什么?是否传入已定义的异常类的名称?我在线阅读的示例中没有一个实际说明括号之间的内容,因此我想知道要在括号中传递什么异常。的参数是用户定义的异常。在处理程序中,您可以返回任何需要的内容,其中包括一个模板。例如:
from flask import render_template
class MyCustomException(Exception):
pass
@app.errorhandler(MyCustomException)
def custom_handler(e):
return render_template('my_custom_error_page.html')
@app.route('/test_exception')
def test_exception():
raise MyCustomException('just testing :)')
在这种情况下,每当引发MyCustomException
时,应用程序将返回html页面myu custom\u error\u page.html
您可以测试这一点,强制异常发生。例如:
from flask import render_template
class MyCustomException(Exception):
pass
@app.errorhandler(MyCustomException)
def custom_handler(e):
return render_template('my_custom_error_page.html')
@app.route('/test_exception')
def test_exception():
raise MyCustomException('just testing :)')
在Flask应用程序中的路由处理程序中,我使用try-except块捕获任何异常。但是,我实际上在Python代码中引发异常,该代码与包含路由处理程序代码的文件是分开的。即使在“try except”块中捕获了异常,您如何显示该异常的自定义错误页?是否再次引发异常?如果捕获异常,它将不会引发,因此自定义页面将不会显示。如果您希望它即使在
try except
块中也能显示,只需在except
块中添加一个this行:raise
。