Gestión de errores en la AWS SDK para PHP versión 3 - AWS SDK para PHP

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(); }