
# SDK错误码(C SDK)
SDK错误码是C SDK通过 obs_status 枚举返回的状态码，用于标识请求执行结果，便于用户定位问题并做出适当的处理。
SDK错误码包含两部分：
- 对象存储服务的API错误码，详见[OBS错误码](https://support.huaweicloud.com/api-obs/obs_04_0115.html#section1)。
- SDK自定义错误码，请参见[表1]。
 表1obs_status 
| **常量名**                               | **原始值** | **说明**                                                                                    |
|:---|:---|:---|
| OBS_STATUS_OK                         | 0       | 请求成功。                                                                                     |
| OBS_STATUS_InitCurlFailed             | 1       | 初始化curl失败。                                                                                |
| OBS_STATUS_InternalError              | 2       | 内部错误。                                                                                     |
| OBS_STATUS_OutOfMemory                | 3       | 本地环境内存不足。                                                                                 |
| OBS_STATUS_FailedToIInitializeRequest | 6       | 初始化请求失败。                                                                                  |
| OBS_STATUS_XmlParseFailure            | 23      | xml解析失败。                                                                                  |
| OBS_STATUS_NameLookupError            | 33      | 域名解析失败。                                                                                   |
| OBS_STATUS_FailedToConnect            | 34      | 无法连接到服务端。                                                                                 |
| OBS_STATUS_ConnectionFailed           | 36      | 网络连接失败。                                                                                   |
| OBS_STATUS_PartialFile                | 38      | 网络传输中断。                                                                                   |
| OBS_STATUS_InvalidParameter           | 39      | 参数非法。                                                                                     |
| OBS_STATUS_NoToken                    | 40      | 当前并发数已经超过最大并发数（默认值1000）。此处的Token指并发请求令牌，非安全认证令牌。可通过set_online_request_max_count函数调整最大并发数。 |
| OBS_STATUS_OpenFileFailed             | 41      | 打开文件失败。                                                                                   |
| OBS_STATUS_AccessDenied               | 43      | 请求被拒绝。                                                                                    |
| OBS_STATUS_MalformedPolicy            | 44      | 请求policy格式不正确。                                                                            |
| OBS_STATUS_MalformedXML               | 45      | 请求xml格式不正确。                                                                               |
| OBS_STATUS_MethodNotAllowed           | 46      | 请求方法不允许。                                                                                  |
| OBS_STATUS_SignatureDoesNotMatch      | 47      | 签名不匹配，检查ak、sk、token是否对应或有误。                                                               |
| OBS_STATUS_ServiceUnavailable         | 48      | 服务端异常。                                                                                    |
| OBS_STATUS_SlowDown                   | 49      | 请求频率过快。                                                                                   |
   
表2**错误码相关接口** 
| 接口      | 函数签名                                                       | 说明                             |
|:---|:---|:---|
| 获取错误描述  | ``` const char *obs_get_status_name(obs_status status) ``` | 根据错误码获取对应的错误描述字符串。             |
| 确认是否可重试 | ``` int obs_status_is_retryable(obs_status status) ```     | 判断指定错误码是否可重试，返回1表示可重试，0表示不可重试。 |
   
#### 使用示例
```
// 获取错误描述
obs_status ret_status = obs_initialize(OBS_INIT_ALL);
if (OBS_STATUS_OK != ret_status)
{
    printf("obs_initialize failed(%s).\n", obs_get_status_name(ret_status));
}
// 判断是否可重试
if (obs_status_is_retryable(ret_status))
{
    printf("This error is retryable.\n");
}
```
