7. 错误处理¶
7.1. 异常处理¶
调用Client类的相关接口时,如果抛出异常,则表明操作失败,经过网络的异常使用ClientError接收,由SDK检查的异常使用BotoCoreError的子类接收
7.2. ClientError异常处理实例¶
错误处理代码如下所示:
try:
resp = client.XXX(bucket=bucket, key=key)
except botocore.exceptions.ClientError as e:
print(
"Exception: %s\n"
"status_code: %s\n"
"error_code: %s\n"
"request_id: %s\n"
"message: %s\n"
% (
e,
e.response['ResponseMetadata']['HTTPStatusCode'], # 错误http状态码
e.response["Error"]['Code'], # NOS服务器定义错误类型
e.response['ResponseMetadata']['HTTPHeaders']['x-nos-request-id'], # NOS服务器定义错误码
e.response['Error']['Message'], # 请求ID,有利于nos开发人员跟踪异常请求的错误原因
))
7.3. 其他比较常见的异常处理类¶
这些类都是BotoCoreError的子类,可以理解为客户端设置有问题的异常类:
类名 | 抛出异常的原因 |
---|---|
InvalidS3AddressingStyleError | 传入的地址类型不支持 |
ParamValidationError | 参数的正确性异常,比如桶名的格式 |
InvalidRetryConfigurationError | 无效的重试配置 |
InvalidDNSNameError | 桶名和DNS命名方式不兼容 |