本文介绍使用 TOS SDK 时的异常处理。
TOS 服务端遵循 HTTP 规范,对于请求失败的场景定义了详细的 HTTP 状态码和业务错误码。详细内容,请参见 TOS 服务端状态码和错误码定义。
TosClientError 是客户端输入参数有误、连接超时或客户端执行取消断点续传上传等特殊操作引起的。例如使用 CreateBucketV2 创建桶时,如果桶名字符长度大于 63 个字符则抛出异常。
通过 TOS SDK 接口向 TOS 服务端发送请求,请求响应中会包含遵循 HTTP 规范的状态码和业务错误码,用于标识当前请求的响应状态。
以下代码展示了下载一个不存在的对象时的异常处理。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> </head> <body> <button id="download">下载</button> <!-- 导入 SDK 文件 --> <script src="https://tos-public.volccdn.com/obj/volc-tos-public/@volcengine/tos-sdk@latest/browser/tos.umd.production.min.js"></script> <script type="text/javascript"> const { TosClientError, TosServerError } = TosClient; const client = new TosClient({ // yourRegion 填写 Bucket 所在地域。以华北2(北京)为例,yourRegion 填写为 cn-beijing。 region: yourRegion, // 填写 endpoint 名称。 endpoint: yourEndpoint, // 从 STS 服务获取的临时访问密钥(AccessKey ID 和 AccessKey Secret)。 accessKeyId: yourAccessKey, accessKeySecret: yourSecretKey, // 从 STS 服务获取的安全令牌(SecurityToken)。 stsToken: yourSecurityToken, // 填写 Bucket 名称。 bucket: examplebucket, }); function handleError(error) { if (error instanceof TosClientError) { console.log('Client Err Msg:', error.message); console.log('Client Err Stack:', error.stack); } else if (error instanceof TosServerError) { console.log('Request ID:', error.requestId); console.log('Response Status Code:', error.statusCode); console.log('Response Header:', error.headers); console.log('Response Err Code:', error.code); console.log('Response Err Msg:', error.message); } else { console.log('unexpected exception, message: ', error); } } const download = document.getElementById('download'); download.addEventListener('click', async () => { try { await client.getObjectV2({ key: 'exampledir/notExistObjct.txt', dataType: 'blob', }); } catch (error) { handleError(error); } }); </script> </body> </html>