我正在使用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。这是实现此目的的预期方式还是我错过了一个更简单的解决方案?