tencent cloud

14天试用边缘安全加速平台 EO 限时免费

文档反馈

对象存储

异常处理

最后更新时间:2024-01-22 11:10:29

简介

调用 SDK 接口请求对象存储(Cloud Object Storage,COS)服务失败时,例如返回码为4xx或者5xx,系统将抛出 (Qcloud\\Cos\\Exception\\ServiceResponseException)异常。

服务端异常

CosServerException 包含了服务端返回的状态码、requestid 和出错明细等。捕获异常后,建议对整个异常进行打印,异常包含了必须的排查因素。以下是异常成员变量的描述以及异常捕获示例:
成员
描述
类型
requestId
请求 ID,用于表示一个请求,对于排查问题十分重要
string
statusCode
response 的 status 状态码,更多详情请参见 错误码
string
errorCode
请求失败时 body 返回的 Error Code,更多详情请参见 错误码
string
errorMessage
请求失败时 body 返回的 Error Message,更多详情请参见 错误码
string

异常捕获示例

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', //协议头部,默认为http
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));

try {
$cosClient->listBuckets()
} catch (Qcloud\\Cos\\Exception\\ServiceResponseException $e) {
$statusCode = $e->getStatusCode(); // 获取错误码
$errorMessage = $e->getMessage(); // 获取错误信息
$requestId = $e->getRequestId(); // 获取错误的 requestId
$errorCode = $e->getCosErrorCode(); // 获取错误名称
$request = $e->getRequest(); // 获取完整的请求
$response = $e->getResponse(); // 获取完整的响应
echo ($e);
} catch (\\Exception $e) {

}
注意
如您使用 Phar 方式或源码方式安装 SDK,返回的异常信息提示会更加准确。如您使用 Composer 方式安装 SDK,返回的异常信息如不符合您的需求,可通过修改 vendor/guzzlehttp/guzzle-services/src/SchemaValidator.php 来自定义一些错误信息。

使用自助诊断工具

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

使用步骤

1. 复制异常处理返回的 RequestId(请求 ID)。
2. 单击 COS 自助诊断工具,进入自助诊断页面。

3. 在顶部的 RequestId 输入框中,输入待诊断的 RequestId,并单击开始诊断
4. 稍侯片刻,便能看到相应的智能诊断结果。

产品类别

联系我们

联系我们,为您的业务提供专属服务。

技术支持

如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

7x24 电话支持
中国香港
+852 800 906 020 (免费)
美国
+1 844 606 0804 (免费)
英国
+44 808 196 4551 (免费)
加拿大
+1 888 605 7930 (免费)
澳大利亚
+61 1300 986 386 (免费)
EdgeOne 热线
+852 300 80699
更多本地服务热线陆续新增中