AWS SDK v2曾经有一个特定的NoSuchKeyException,在v3中已经消失了。
这是捕获不存在的键错误的方法:
try {
$s3Client->getObject([
'Bucket' => $bucket,
'Key' => $key
]);
} catch (NoSuchKeyException $e) {
// ...
}
现在抛出的唯一例外是S3Exception,它没有类似的子类。
在捕获S3Exception时,如果异常与不存在的密钥相关,我怎么知道?
是否有特定的异常代码,如果有,哪里可以找到此类代码的列表?
答案 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') {
// ...
}
}