如何将异常作为 json 引发?



在我的应用程序的服务级别,我正在引发一个异常,我希望它作为JSON打印到浏览器。

我按照文档中的说明实现了它:

raise falcon.HTTPError(
'12345 - My Custom Error',
'some text'
).to_json()

控制台的输出:

TypeError: exceptions must derive from BaseException

以前有人遇到过这个问题,可以帮助我解决这个问题吗?

你正在尝试引发一个字符串。正确的方法是使用 set_error_serializer((。

文档中的示例似乎正是您所需要的(加上 YAML 支持(。

def my_serializer(req, resp, exception):
representation = None
preferred = req.client_prefers(('application/x-yaml',
'application/json'))
if preferred is not None:
if preferred == 'application/json':
representation = exception.to_json()
else:
representation = yaml.dump(exception.to_dict(),
encoding=None)
resp.body = representation
resp.content_type = preferred
resp.append_header('Vary', 'Accept')
app = falcon.API()
app.set_error_serializer(my_serializer)

创建自定义异常类 在 falcon 文档中解释,搜索add_error_handler

class RaiseUnauthorizedException(Exception):
def handle(ex, req, resp, params):
resp.status = falcon.HTTP_401
response = json.loads(json.dumps(ast.literal_eval(str(ex))))
resp.body = json.dumps(response)

将自定义异常类添加到猎鹰 API 对象

api = falcon.API()
api.add_error_handler(RaiseUnauthorizedException)

导入自定义异常类并传递消息

message = {"status": "error", "message" : "Not authorized"}
RaiseUnauthorizedException(message)

相关内容

  • 没有找到相关文章

最新更新