最近更新时间: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 |