异常处理
更新时间:2021-09-06
客户端异常
客户端异常表示客户端尝试向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代表成功执行
//建议使用request&response标准请求接口, 请求更加规范
服务端异常
当BOS服务端出现异常时,BOS服务端会返回给用户相应的错误信息,以便定位问题。常见服务端异常可参见BOS错误信息格式
服务端出现异常,会将错误信息写到response中,通过response进行异常处理
int ret = client.put_object(request, &response);
if (response.is_fail()) {
//状态码,0表示成功,400~599代表HTTP错误码,1000~代表客户端错误
//建议打印requestid, 有助于快速定位异常请求
int status = response.status_code();
std::string msg = response.error().message();
std::string request_id = response.error().request_id();
printf("put object fail, [status_code = %d], [message = %s], [requestid = %s]", status, msg.c_str(), request_id.c_str());
return status;
}
return RET_OK;