所有的 ARKID Client 错误都继承自 ArkIDError
,
所有 SDK 错误类型均可从 arkid_client
导入。
因此,您可以通过 ArkIDError
来捕获 ARKID Client 抛出的*所有*错误,
例如
import logging
from arkid_client import UserClient, ArkIDError
try:
uc = UserClient(...)
# create with no parameters will throw an exception
user = uc.create_user()
except ArkIDError:
logging.exception("ArkID Error!")
raise
在大多数情况下,最好查找 ArkIDError
的特定子类。
比如,想要区分网络故障和意外的 API 条件,
您需要通过 NetworkError
和 ArkIDAPIError
来定位问题所在:
import logging
from arkid_client import (UserClient,
ArkIDError, ArkIDAPIError, NetworkError)
try:
uc = UserClient(...)
users = uc.query_user()
for user in users:
print(user['name'])
...
except ArkIDAPIError as e:
# Error response from the REST service, check the code and message for details.
logging.error(("Got a ArkID API Error\n"
"Error Code: {}\n"
"Error Message: {}").format(e.code, e.message))
raise e
except NetworkError:
logging.error(("Network Failure. "
"Possibly a firewall or connectivity issue"))
raise
except ArkIDError:
logging.exception("Totally unexpected ArkIDError!")
raise
else:
...
当然,如果您想要了解更多关于响应的信息,您要做的不仅仅只有这些。
由 ArkID SDK 引起的所有错误都应该是 ArkIDError
的实例。
对 ArkID Client 方法的错误调用通常会引发 ArkIDSDKUsageError
,
但是,在极少数情况下,可能会引发标准的 python 异常( ValueError
, OSError
等)
arkid_client.
ArkIDSDKUsageError
[源代码]¶基类:arkid_client.exceptions.ArkIDError
, ValueError
当 ArkID Client 检测到它被不正确的使用时会抛出 ArkIDSDKUsageError
异常,
这些错误通常表示某些关于 ArkID Client 使用的规范(例如所需的操作顺序)已被违反。
arkid_client.
ArkIDAPIError
(response, *args, **kwargs)[源代码]¶基类:arkid_client.exceptions.ArkIDError
封装 REST API 的响应信息
变量: |
|
---|
raw_json
¶获取从 ArkID API 接收到的响应信息,尝试以 JSON 格式解析数据, 并转化为 dict 。
如果响应信息无法通过 JSON 格式加载, 则返回 None 。
raw_text
¶以 string 形式获取响应信息。
arkid_client.
AuthAPIError
(response, *args, **kwargs)[源代码]¶基类:arkid_client.exceptions.ArkIDAPIError
认证服务客户端的错误类型,继承了 message
变量
arkid_client.exceptions.
UserAPIError
(response)[源代码]¶基类:arkid_client.exceptions.ArkIDAPIError
用户服务客户端的错误类型,继承了 message
变量
arkid_client.exceptions.
OrgAPIError
(response)[源代码]¶基类:arkid_client.exceptions.ArkIDAPIError
组织服务客户端的错误类型,继承了 message
变量
arkid_client.exceptions.
NodeAPIError
(response)[源代码]¶基类:arkid_client.exceptions.ArkIDAPIError
节点服务客户端的错误类型,继承了 message
变量
arkid_client.
NetworkError
(message, exception, *args, **kwargs)[源代码]¶基类:arkid_client.exceptions.ArkIDError
当与 ArkID 服务通信发生错误时会抛出 NetworkError
错误,
其为通信方面出现的错误的基类。
其在保留原始异常数据的基础上,也可以接受其他一些有用的消息,
方便用户明确错误所在。
arkid_client.
ArkIDConnectionError
(message, exception, *args, **kwargs)[源代码]¶基类:arkid_client.exceptions.NetworkError
在发出 REST 请求时发生连接错误。