避免在端点上抛出异常的最佳做法?

时间:2013-09-21 08:21:11

标签: python exception exception-handling try-catch endpoint

我公开HTTP端点 - 使用Bottle独家输出JSON。

当前错误抛出:{'error': %s, 'error_message': %s, 'status_code': #}

所以在我所有的端点装饰函数中我都有:

try:
    someObj = <stuff>
except <MyCustomErrors> as e:
    response.status = e.response.pop('status_code', 500)
    return e.response

response.status = someObj.response.pop('status_code', 200)

return someObj.response

但是,我可以轻松地完全避免使用异常,从而减少开销,从而产生更简洁的+ DRYer端点代码。

但是有缺点;其他开发人员至少需要读取或运行代码一次才能理解输出格式。

文档可在此处使用;然而这整个设置是不好的做法吗?

1 个答案:

答案 0 :(得分:0)

与此同时,我写了这个可怜的替补:

# 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>)