PHP v3 的 AWS SDK 中是否有等效于 NoSuchKeyException 的东西?

Is there an equivalent to NoSuchKeyException in AWS SDK for PHP v3?

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

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

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

现在抛出的唯一异常是S3Exception,它没有类似的子class。

我怎么知道在捕获 S3Exception 时异常是否与不存在的键相关?

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

刚在migration guide找到原因:

You should handle errors by catching the root exception class for each service (e.g., Aws\Rds\Exception\RdsException). You can use the getAwsErrorCode() method of the exception to check for specific error codes. This is functionally equivalent to catching different exception classes, but provides that function without adding bloat to the SDK.

list of error codes for S3,这表明我要找的是NoSuchKey

所以捕获这个错误的新方法是:

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