Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Gestión de errores en la AWS SDK para PHP versión 3
Gestionar errores síncronos
Si se produce un error al realizar una operación, se genera una excepción. Por este motivo, si necesita administrar errores en el código, utilice bloques try
/catch
en torno a sus operaciones. El SDK lanza excepciones específicas del servicio cuando se produce un error.
El siguiente ejemplo utiliza Aws\S3\S3Client
. Si se produce un error, la excepción lanzada será del tipo Aws\S3\Exception\S3Exception
. Todas las excepciones específicas de servicios que lanza el SDK son una extensión de la clase Aws\Exception\AwsException
. Esta clase contiene información útil sobre el error, incluido el ID de la solicitud, el código de error y el tipo de error. Tenga en cuenta que para algunos servicios compatibles, los datos de respuesta se convierten en una estructura matriz asociativa (similar a los objetos de Aws\Result
) que se puede evaluar como una matriz asociativa de PHP normal. El método toArray()
devolverá cualquier dato, en caso de que exista.
Importaciones
require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException; use Aws\S3\Exception\S3Exception;
Código de muestra
// Create an SDK class used to share configuration across clients. $sdk = new Aws\Sdk([ 'region' => 'us-west-2' ]); // Use an Aws\Sdk class to create the S3Client object. $s3Client = $sdk->createS3(); try { $s3Client->createBucket(['Bucket' => 'amzn-s3-demo-bucket']); } catch (S3Exception $e) { // Catch an S3 specific exception. echo $e->getMessage(); } catch (AwsException $e) { // This catches the more generic AwsException. You can grab information // from the exception using methods of the exception object. echo $e->getAwsRequestId() . "\n"; echo $e->getAwsErrorType() . "\n"; echo $e->getAwsErrorCode() . "\n"; // This dumps any modeled response data, if supported by the service // Specific members can be accessed directly (e.g. $e['MemberName']) var_dump($e->toArray()); }
Gestionar errores asíncronos
Al enviar solicitudes asíncronas no se lanzan excepciones. En lugar de ello, debe utilizar el método then()
u otherwise()
de la promesa devuelta para recibir el resultado o el error.
Importaciones
require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException; use Aws\S3\Exception\S3Exception;
Código de muestra
//Asynchronous Error Handling $promise = $s3Client->createBucketAsync(['Bucket' => 'amzn-s3-demo-bucket']); $promise->otherwise(function ($reason) { var_dump($reason); }); // This does the same thing as the "otherwise" function. $promise->then(null, function ($reason) { var_dump($reason); });
Puede "desencapsular" la promesa y hacer que se lance la excepción en su lugar.
Importaciones
require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException; use Aws\S3\Exception\S3Exception;
Código de muestra
$promise = $s3Client->createBucketAsync(['Bucket' => 'amzn-s3-demo-bucket']);
//throw exception try { $result = $promise->wait(); } catch (S3Exception $e) { echo $e->getMessage(); }