控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

异常处理

最近更新时间:2021-11-18 17:20:01

简介

SDK 调用失败时,结果信息包含在 API 返回的 cos_status_t 结构中。

SDK 中使用每一个 API 的正确做法如下所示,为了简要,文档中范例不再给出具体异常的处理,仅给出 API 的使用范例。

cos_status_t *s = NULL;
s = cos_put_object_from_file(options, &bucket, &object, &file, &headers, &resp_headers);
if (!s && !cos_status_is_ok(s)) {
        // 按需要进行异常场景的日志输出和处理
        cos_warn_log("failed to put object from file", buf);
        if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
        if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
        if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
}

客户端异常

当 cos_status_t 结构中 code 成员值小于0时,表明发生 SDK 本地客户端错误,错误码信息参考枚举 cos_error_code_e 定义。

typedef enum {
        COSE_OK = 0,
        COSE_OUT_MEMORY = -1000,
        COSE_OVER_MEMORY = -999,
        COSE_FAILED_CONNECT = -998,
        COSE_ABORT_CALLBACK = -997,
        COSE_INTERNAL_ERROR = -996,
        COSE_REQUEST_TIMEOUT = -995,
        COSE_INVALID_ARGUMENT = -994,
        COSE_INVALID_OPERATION = -993,
        COSE_CONNECTION_FAILED = -992,
        COSE_FAILED_INITIALIZE = -991,
        COSE_NAME_LOOKUP_ERROR = -990,
        COSE_FAILED_VERIFICATION = -989,
        COSE_WRITE_BODY_ERROR = -988,
        COSE_READ_BODY_ERROR = -987,
        COSE_SERVICE_ERROR = -986,
        COSE_OPEN_FILE_ERROR = -985,
        COSE_FILE_SEEK_ERROR = -984,
        COSE_FILE_INFO_ERROR = -983,
        COSE_FILE_READ_ERROR = -982,
        COSE_FILE_WRITE_ERROR = -981,
        COSE_XML_PARSE_ERROR = -980,
        COSE_UTF8_ENCODE_ERROR = -979,
        COSE_CRC_INCONSISTENT_ERROR = -978,
        COSE_FILE_FLUSH_ERROR = -977,
        COSE_FILE_TRUNC_ERROR = -976,
        COSE_UNKNOWN_ERROR = -100
} cos_error_code_e;

服务端异常

当 cos_status_t 结构中 code 成员值大于0时,表明发生网络侧错误。

以下是 cos_status_t 结构的描述:

cos_status_t 成员 描述 类型
code response 的 status 状态码, 4xx 是指请求因客户端而失败, 5xx 是服务端异常导致的失败,详情请参见 错误码 文档 Int
error_code 请求失败时 body 返回的 Error Code,详情请参见 错误码 文档 String
error_msg 请求失败时 body 返回的 Error Message,详情请参见 错误码 文档 String
req_id 请求 ID,用于标识用户唯一请求 String

使用自助诊断工具

针对请求可能遇到不同的报错情况,我们为您提供了 COS 自助诊断工具,帮助您快速定位问题,调试报错代码。

使用步骤

  1. 复制异常处理返回的 RequestId(请求 ID)。
  2. 单击 COS 自助诊断工具,进入自助诊断页面。
    COS 自助诊断工具
    点击自助诊断
    输入 RequestId 进行智能诊断,获取请求基本信息、帮助指引和诊断提示,快速定位请求错误。
  3. 在顶部的 RequestId 输入框中,输入待诊断的 RequestId,并单击开始诊断
  4. 稍侯片刻,便能看到相应的智能诊断结果。
目录