Java异常处理

OSS Java SDK包含两类异常,一类是客户端异常ClientException,另一类是服务器端异常OSSException,这两类异常均继承自RuntimeException。

异常处理示例

以下代码用于展示异常处理:

try {
    // OSS操作,例如上传文件
    ossClient.putObject(...);
} catch (OSSException oe) {
    System.out.println("Caught an OSSException, which means your request made it to OSS, "
            + "but was rejected with an error response for some reason.");
    System.out.println("Error Message: " + oe.getErrorMessage());
    System.out.println("Error Code:       " + oe.getErrorCode());
    System.out.println("Request ID:      " + oe.getRequestId());
    System.out.println("Host ID:           " + oe.getHostId());
} catch (ClientException ce) {
    System.out.println("Caught an ClientException, which means the client encountered "
            + "a serious internal problem while trying to communicate with OSS, "
            + "such as not being able to access the network.");
    System.out.println("Error Message: " + ce.getMessage());
} finally {
    if (ossClient != null) {
        ossClient.shutdown();
    }
}
            

ClientException

ClientException指客户端尝试向OSS发送请求以及数据传输时遇到的异常。例如,当发送请求时网络连接不可用,则会抛出ClientException。当上传文件时发生IO异常,也会抛出ClientException。

OSSException

OSSException指服务器端异常,即对服务器错误信息的解析。OSSException包含OSS返回的错误码和错误信息,便于定位问题,并做出适当的处理。

OSSException通常包含以下错误信息:

参数

描述

Code

OSS返回的错误码。

Message

OSS返回的详细错误信息。

RequestId

用于唯一标识该请求的UUID。当您无法解决问题时,可以提供RequestId来请求OSS开发工程师的帮助。

HostId

用于标识访问的OSS集群,与请求时使用的Host一致。

OSS常见错误码

错误码

描述

HTTP状态码

AccessDenied

拒绝访问

403

BucketAlreadyExists

存储空间已存在

409

BucketNotEmpty

存储空间非空

409

EntityTooLarge

实体过大

400

EntityTooSmall

实体过小

400

FileGroupTooLarge

文件组过大

400

FilePartNotExist

文件分片不存在

400

FilePartStale

文件分片过时

400

InvalidArgument

参数格式错误

400

InvalidAccessKeyId

AccessKey ID不存在

403

InvalidBucketName

无效的存储空间名称

400

InvalidDigest

无效的摘要

400

InvalidObjectName

无效的文件名称

400

InvalidPart

无效的分片

400

InvalidPartOrder

无效的分片顺序

400

InvalidTargetBucketForLogging

Logging操作中有无效的目标存储空间

400

InternalError

OSS内部错误

500

MalformedXML

XML格式非法

400

MethodNotAllowed

不支持的方法

405

MissingArgument

缺少参数

411

MissingContentLength

缺少内容长度

411

NoSuchBucket

存储空间不存在

404

NoSuchKey

文件不存在

404

NoSuchUpload

分片上传ID不存在

404

NotImplemented

无法处理的方法

501

PreconditionFailed

预处理错误

412

RequestTimeTooSkewed

客户端本地时间和OSS服务器时间相差超过15分钟

403

RequestTimeout

请求超时

400

SignatureDoesNotMatch

签名错误

403

InvalidEncryptionAlgorithmError

指定的熵编码加密算法错误

400