异常处理

客户端异常

客户端异常表示客户端尝试向BOS发送请求以及数据传输时遇到的异常。
例如,当发送请求时网络连接不可用时,client操作会返回非零;当上传文件时发生IO异常时,返回非零。

客户端执行put_object、delete_bucket等操作返回非零,具体返回错误码信息见bcesdk/common/common.h。也可调用bcesdk/util/util.h当中的stringfy_ret_code函数将返回的错误码转为字符串进行打印。

int ret = client.upload_file("bucketName", "objectName", "fileName");
if (ret != 0) {
    std::cout << "client error occurs: " << stringfy_ret_code(ret) << std::endl;
    return ret;
}
return RET_OK;//RET_OK=0代表成功执行

服务端异常

当BOS服务端出现异常时,BOS服务端会返回给用户相应的错误信息,以便定位问题。常见服务端异常可参见BOS错误信息格式

服务端出现异常,会将错误信息写到response中,通过response进行异常处理

int ret = client.put_object(request, &response);
if (ret != 0) {
    return ret;
}
if (response.is_fail()) {
    //状态码,0表示成功,400~599代表HTTP错误码,1000~代表客户端错误
    int status = response.status_code();
    std::string msg = response.error().message();
    printf("put object fail, [status_code = %d], [message = %s]", status, msg.c_str());
    return status;
}
return RET_OK;

SDK日志

//设置日志
FILE *logfp = fopen("sdk.log", "w");//设置日志输出文件
sdk_set_log_stream(logfp);//设置输出流
sdk_set_log_level(SDK_LOG_DEBUG);//设置日志级别

日志一共五个级别:

  1. SDK_LOG_DEBUG
  2. SDK_LOG_INFO
  3. SDK_LOG_WARN
  4. SDK_LOG_ERROR
  5. SDK_LOG_FATAL