Python 避免在端点上引发异常的最佳实践?
我正在公开HTTP端点,这些端点只使用瓶子输出JSON 当前抛出的错误:Python 避免在端点上引发异常的最佳实践?,python,exception,exception-handling,try-catch,endpoint,Python,Exception,Exception Handling,Try Catch,Endpoint,我正在公开HTTP端点,这些端点只使用瓶子输出JSON 当前抛出的错误:{'error':%s,'error_message':%s,'status_code':} 因此,在我所有的端点修饰函数中,我有: 试试看: someObj= 除e以外: response.status=e.response.pop('status_code',500) 返回e.response response.status=someObj.response.pop('status_code',200) 返回someOb
{'error':%s,'error_message':%s,'status_code':}
因此,在我所有的端点修饰函数中,我有:
试试看:
someObj=
除e以外:
response.status=e.response.pop('status_code',500)
返回e.response
response.status=someObj.response.pop('status_code',200)
返回someObj.response
但我可以很容易地避免同时使用异常,从而生成更简洁的端点代码,同时减少开销
但也有缺点;其他开发人员需要至少阅读或运行一次代码才能理解输出格式
文档将在这里工作;然而,这整个设置是一种糟糕的做法吗?与此同时,我写了这个糟糕的替代品:
# Not a decorator because I can't work out how to give `@route(apply=)` func args
def error_else_response(init_with):
try:
result = init_with(**request.query)
except <CustomError> as e:
response.status = e.msg.pop('status_code')
return e.msg
response.status = result.response.pop('status_code')
return result.response
@route('/augment')
def augment():
return error_else_response(<CustomClass>)
#我不是装饰师,因为我不知道如何给出`@route(apply=)`func参数
def error_else_响应(初始化):
尝试:
result=init_,带(**request.query)
除e以外:
response.status=e.msg.pop('status\u code')
返回e.msg
response.status=result.response.pop('status\u code'))
返回result.response
@路由(“/augment”)
def augment():
返回错误\u else\u response()