对于 REST API 错误,我应该引发哪种异常?

And*_*rie 5 python rest exception

我正在用 Python 编写一个简单的 API 客户端,我想知道如果远程服务器不满意我应该引发什么异常。

API 本身的文档记录非常少(我不知道所有可能的错误消息,因此我不能只为所有错误消息定义自定义类),我让 Requests 处理HTTPError在这些情况下引发的 HTTP 级错误,但是什么如果服务器只error在 JSON 响应中提供密钥,我应该提出吗?

我目前正在使用Exception,但感觉相当广泛,我想知道是否有更好的选择。

问候。

wim*_*wim 4

是的,仅仅加注Exception可能太过宽泛。

通常一个模块应该定义自己的异常基类:

class MyAPIClientError(Exception):
    pass
Run Code Online (Sandbox Code Playgroud)

然后你可以将其子类化:

class RemoteServerNotHappyError(MyAPIClientError):
    pass
Run Code Online (Sandbox Code Playgroud)

RemoteServerNotHappyError可能应该提到一些关于服务器的 json 返回的内容,这是您的 API 客户端类不期望的。添加您认为合适的相关错误消息。

这意味着您的库的用户可以捕获这些特定的异常(他们可能知道如何处理),而不必捕获每个异常(他们肯定不知道如何处理每个可能的故障模式)。