我想捕获所有错误并为我的api项目返回json格式的错误。
这是我的错误处理程序:
@app.errorhandler(Exception)
def handle_exception(e):
if not isinstance(e, HTTPException):
print(e)
return {
"code": 500,
"name": "Internal Server Error",
"description": repr(e),
}, 500
else:
response = e.get_response()
response.data = json.dumps({
"code": e.code,
"name": e.name,
"description": e.description,
})
response.content_type = "application/json"
return response
如果异常发生在视图函数内,我的错误处理程序会捕获异常:
@api.get("/")
def all(user):
a.b
return []
这成功地捕获了以下异常并返回一个json响应:
名称“a”未定义
但如果视图函数很好,但返回值不友好于json,则无法捕获:
@api.get("/")
def all(user):
return 1
它引发以下错误并返回 html 格式的错误。
TypeError:视图函数没有返回有效的响应。返回类型必须是字符串、字典、列表、带标题或状态的元组、响应实例或WSGI callable,但它是int。
从文档中:
在调试模式下,不会使用“500内部服务器错误”的处理程序。相反,将显示交互式调试器。
关闭调试模式也会使处理程序处理<code>500 Internal Server Error</code>。