AWS SDK for PHP v3中是否存在与NoSuchKeyException等效的内容?

时间:2015-10-21 13:50:43

标签: php amazon-s3 aws-sdk

AWS SDK v2曾经有一个特定的NoSuchKeyException,在v3中已经消失了。

这是捕获不存在的键错误的方法:

try {
    $s3Client->getObject([
        'Bucket' => $bucket,
        'Key'    => $key
    ]);
} catch (NoSuchKeyException $e) {
    // ...
}

现在抛出的唯一例外是S3Exception,它没有类似的子类。

在捕获S3Exception时,如果异常与不存在的密钥相关,我怎么知道?

是否有特定的异常代码,如果有,哪里可以找到此类代码的列表?

1 个答案:

答案 0 :(得分:3)

刚刚在migration guide中找到了原因:

  

您应该通过捕获每个的根异常类来处理错误   服务(例如,Aws \ Rds \ Exception \ RdsException)。你可以使用   检查特定错误的异常的getAwsErrorCode()方法   码。这在功能上等同于捕获不同的异常   类,但提供该功能而不向SDK添加膨胀。

list of error codes for S3,表明我正在寻找的是NoSuchKey

因此,捕获此错误的新方法是:

try {
    $s3Client->getObject([
        'Bucket' => $bucket,
        'Key'    => $key
    ]);
} catch (S3Exception $e) {
    if ($e->getAwsErrorCode() == 'NoSuchKey') {
        // ...
    }
}