【发布时间】:2022-09-24 10:14:47
【问题描述】:
我想为我的 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,但它是一个 int。