在请求中处理自定义API错误消息的正确方法?

时间:2018-03-26 14:00:00

标签: python exception exception-handling python-requests httpexception

我正在使用Python Requests库调用一个API,它可能会在其JSON响应中返回自定义错误消息,例如:

{
    "error": "TOKEN INVALID"
}

我希望有一个带有此错误消息的自定义异常类作为消息,但是否则尽可能使用请求错误处理。从其他问题看来,正确的方法是这样的:

class MyCustomAPIError(requests.exceptions.HTTPError):
    pass

response = requests.request('GET', url)
try:
    response.raise_for_status()
except requests.exceptions.HTTPError as e:
    msg = e.response.json().get('error')
    raise MyCustomAPIError(msg)

然而,这引发了两个例外,首先是原始HTTPError,然后是

During handling of the above exception, another exception occurred:

... my custom error

这似乎不是很优雅。我可以使用

来抑制第一个异常
raise MyCustomAPIError(msg) from None

但这似乎相当hacky。这是实现此目的的预期方式还是我错过了一个更简单的解决方案?

0 个答案:

没有答案