捕获异常并显示自定义错误页面
Catch an exception and displaying a custom error page
我有一个 Flask 应用程序。我在我的一个库中创建了一个与我想通知用户的非常具体的错误相关的自定义异常。
我希望发生的是,每当抛出此异常时,Flask 都会转到此异常的默认页面,并简要说明用户需要做什么。
我有
class SpecificException(Exceptions):
pass
然后
def __verify_compatible_version(self):
if self.version != VERSION:
raise SpecificException ("detected incompatible version")
我不确定该怎么做。 docs 似乎清楚地表明这是可能的,但我没有看到任何好的例子,也没有关于如何去做的建议。如何显示自定义页面来处理我的自定义异常?
您需要为异常注册错误处理程序。错误处理程序的行为类似于普通视图,它应该 return 响应(或类似响应的数据)。在这种情况下,我假设您最终想要发送一个 500 状态代码,所以这就是 , 500
和 return 的原因。处理程序接收异常实例作为第一个参数,因此如果它有特殊信息,您可以在呈现模板时使用它。
class SpecificException(Exception):
pass
@app.errorhandler(SpecificException)
def handle_specific_exception(e):
return render_template('errors/specific_exception.html', e=e), 500
我有一个 Flask 应用程序。我在我的一个库中创建了一个与我想通知用户的非常具体的错误相关的自定义异常。
我希望发生的是,每当抛出此异常时,Flask 都会转到此异常的默认页面,并简要说明用户需要做什么。
我有
class SpecificException(Exceptions):
pass
然后
def __verify_compatible_version(self):
if self.version != VERSION:
raise SpecificException ("detected incompatible version")
我不确定该怎么做。 docs 似乎清楚地表明这是可能的,但我没有看到任何好的例子,也没有关于如何去做的建议。如何显示自定义页面来处理我的自定义异常?
您需要为异常注册错误处理程序。错误处理程序的行为类似于普通视图,它应该 return 响应(或类似响应的数据)。在这种情况下,我假设您最终想要发送一个 500 状态代码,所以这就是 , 500
和 return 的原因。处理程序接收异常实例作为第一个参数,因此如果它有特殊信息,您可以在呈现模板时使用它。
class SpecificException(Exception):
pass
@app.errorhandler(SpecificException)
def handle_specific_exception(e):
return render_template('errors/specific_exception.html', e=e), 500