

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tratamento de erros na AWS SDK para PHP versão 3
<a name="handling-errors"></a>

## Tratamento de erros síncronos
<a name="synchronous-error-handling"></a>

Se ocorrer um erro durante a execução de uma operação, será gerada uma exceção. Por esse motivo, se você precisar tratar de erros em seu código, use blocos `try`/`catch` em torno de suas operações. O SDK gera exceções específicas ao serviço quando ocorre um erro.

O exemplo a seguir usa a `Aws\S3\S3Client`. Se houver um erro, a exceção gerada será do tipo `Aws\S3\Exception\S3Exception`. Todas as exceções específicas ao serviço que o SDK gera são estendidas da classe `Aws\Exception\AwsException`. Essa classe contém informações úteis sobre a falha, incluindo o ID da solicitação, o código do erro e o tipo do erro. Observe que, para alguns serviços que oferecem suporte a ele, os dados de resposta são impelidos para uma estrutura de matriz associativa (semelhante a objetos `Aws\Result`), que pode ser acessada como uma matriz PHP associativa normal. O método `toArray()` retornará quaisquer dados, se eles existirem.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;
```

 **Código de exemplo** 

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

## Tratamento de erros assíncronos
<a name="asynchronous-error-handling"></a>

As exceções não são geradas ao enviar solicitações assíncronas. Em vez disso, você deve usar o método `then()` ou `otherwise()` da promessa retornada para receber o resultado ou o erro.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;
```

 **Código de exemplo** 

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

Você pode "decodificar" a promessa e fazer com que a exceção seja gerada.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;
```

 **Código de exemplo** 

```
$promise = $s3Client->createBucketAsync(['Bucket' => 'amzn-s3-demo-bucket']);
```

```
//throw exception
try {
    $result = $promise->wait();
} catch (S3Exception $e) {
    echo $e->getMessage();
}
```