最近更新时间:2022-07-25
本文介绍Go SDK的错误处理。
| func HandleError(err error) { fmt.Println("panic err:", err) err = DeleteTestBucketAndObject() if err != nil { fmt.Println("DeleteTestBucketAndObject err:", err) } os.Exit(-1) } | 
以下代码用于展示错误处理:
| func DeleteTestBucketAndObject() error { sc := s3lib.NewS3(endpoint, accessKey, secretKey) err := sc.DeleteObject(bucketName, objectKey) if err != nil { return err } 
 err = sc.DeleteBucket(bucketName) if err != nil { return err } return nil } | 
OS错误码列表如下:
| 错误码 | 描述 | HTTP状态码 | 
| AccessDenied | 拒绝访问 | 403 | 
| AuthorizationHeaderMalformed | 授权头格式错误 | 400 | 
| AuthorizationQueryParametersError | 请求参数不支持 | 400 | 
| BadDigest | MD5不匹配 | 400 | 
| BucketAlreadyExists | Bucket已经存在 | 409 | 
| BucketAlreadyOwnedByYou | Buckett已经存在并已拥有 | 409 | 
| BucketNotEmpty | Bucket不为空 | 409 | 
| TooManyBuckets | Bucket数量超过限度 | 400 | 
| CredentialMalformed | 证书不被允许 | 400 | 
| EmptyEntity | 无效的对象 | 400 | 
| EntityTooLarge | 实体过大 | 400 | 
| EntityTooSmall | 实体过小 | 400 | 
| ExpiredToken | 请求已过期 | 403 | 
| InvalidArgument | 参数格式错误 | 400 | 
| InvalidAccessKeyId | AccessKeyId不存在 | 403 | 
| InvalidAcl | 无效的ACL | 400 | 
| InvalidBucketName | 无效的Bucket名称 | 400 | 
| InvalidContinuationToken | 无效的延续令牌 | 400 | 
| InvalidCopySourceStorageClass | 无效的复制源 | 400 | 
| InvalidCorsDocument | 无效的跨域资源共享规则 | 400 | 
| InvalidDigest | 无效的摘要 | 400 | 
| InvalidEncodingType | 无效的编码类型 | 400 | 
| InvalidObjectName | 无效的Object名称 | 400 | 
| InvalidPart | 无效的Part | 400 | 
| InvalidPartOrder | 无效的Part顺序 | 400 | 
| InvalidPolicyDocument | 无效的Policy文档 | 400 | 
| InvalidPosition | 请求参数位置必须非负数 | 400 | 
| InvalidRequest | 非法的请求 | 400 | 
| InvalidRange | 超出请求范围 | 416 | 
| InvalidRegion | 地域不匹配 | 400 | 
| InvalidSseHeader | 无效的服务端加密配置 | 400 | 
| InvalidStorageClass | 请求头指定的存储类无效 | 400 | 
| InternalError | UOS内部错误 | 500 | 
| InvalidAccessKeyId | 密钥ID不匹配 | 400 | 
| IllegalVersioningConfigurationException | 版本控制配置无效 | 400 | 
| MalformedExpires | 日期超出范围 | 400 | 
| MalformedDate | 无效的日期格式 | 400 | 
| MalformedXML | XML格式非法 | 400 | 
| MalformedPOSTRequest | Post请求的body格式非法 | 400 | 
| MalformedPolicy | 无效的策略资源 | 400 | 
| MethodNotAllowed | 不支持的方法 | 405 | 
| MissingFields | 请求缺少字段 | 400 | 
| MissingContentLength | 缺少内容长度 | 411 | 
| MissingContentMD5 | 缺少MD5 | 400 | 
| MissingRequestBodyError | 请求内容为空 | 411 | 
| NoSuchBucket | Bucket不存在 | 404 | 
| NoSuchBucketLc | 指定的Bucket没有配置生命周期 | 404 | 
| NoSuchBucketPolicy | Bucket策略不存在 | 404 | 
| NoSuchBucketCors | 指定桶无cors | 404 | 
| NoSuchKey | 文件不存在 | 404 | 
| NoSuchUpload | Multipart Upload ID不存在 | 404 | 
| NoSuchVersion | 版本号不匹配 | 404 | 
| NotImplemented | 无法处理的方法 | 501 | 
| ObjectNotAppendable | 无法为不允许扩展对象执行扩展操作 | 409 | 
| PositionNotEqualToLength | position长度不匹配 | 409 | 
| PreconditionFailed | 预处理错误 | 412 | 
| RequestTimeTooSkewed | 客户端本地时间和UOS服务器时间相差超过15分钟 | 403 | 
| SignatureDoesNotMatch | 签名错误 | 403 | 
| TooManyBuckets | 用户的Bucket数目超过限制 | 400 | 
| UnsupportedAclConfigurationException | 不支持请求的URL配置 | 400 | 
