捕获异常并显示自定义错误页面

cli*_*ray 4 python exception flask

我有一个Flask应用程序.我在我的一个库中创建了一个自定义异常,该异常与我想通知用户的非常具体的错误有关.

我想要发生的是,每当抛出此异常时,Flask都会转到此异常的默认页面,并简要说明用户需要执行的操作.

我有

class SpecificException(Exceptions):
    pass
Run Code Online (Sandbox Code Playgroud)

然后

def __verify_compatible_version(self):
    if self.version != VERSION:
        raise SpecificException ("detected incompatible version")
Run Code Online (Sandbox Code Playgroud)

我不确定该怎么做.该文档似乎清楚这是可能的,但我没有看到如何做到这一点任何很好的例子,也没有建议.如何显示自定义页面以处理我的自定义异常?

dav*_*ism 6

您需要为异常注册错误处理程序.错误处理程序的行为类似于普通视图,它应该返回响应(或类似响应的数据).在这种情况下,我假设您最终要发送500状态代码,这就是为什么还有, 500返回的原因.处理程序接收异常实例作为第一个参数,因此在呈现模板时可以使用它,如果它有特殊信息.

class SpecificException(Exception):
    pass

@app.errorhandler(SpecificException)
def handle_specific_exception(e):
    return render_template('errors/specific_exception.html', e=e), 500
Run Code Online (Sandbox Code Playgroud)