

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 versión 3 AWS SDK para PHP
<a name="handling-errors"></a>

## Gestionar errores síncronos
<a name="synchronous-error-handling"></a>

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
<a name="asynchronous-error-handling"></a>

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