

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK for PHP バージョン 3 でのエラーの処理
<a name="handling-errors"></a>

## 同期エラー処理
<a name="synchronous-error-handling"></a>

オペレーションの実行中にエラーが発生すると、例外がスローされます。そのため、コード内でエラーを処理する必要がある場合は、オペレーションを `try`/`catch` ブロック内に配置します。SDK では、エラーが発生するとサービス固有の例外がスローされます。

次の例では `Aws\S3\S3Client` を使用しています。エラーがある場合にスローされる例外の型は `Aws\S3\Exception\S3Exception` です。SDK によってスローされるサービス固有のすべての例外は `Aws\Exception\AwsException` クラスから拡張されます。このクラスには、リクエスト ID、エラーコード、エラータイプなどの、失敗に関する有益な情報が含まれています。これをサポートする一部のサービスでは、レスポンスデータが連想配列構造 (`Aws\Result` オブジェクトに類似) に強制変換されることに注意してください。この構造は、通常の PHP 連想配列のようにアクセスできます。この `toArray()` メソッドは、そのようなデータを返します (存在する場合)。

 **インポート** 

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

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

 **サンプルコード** 

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

## 非同期エラー処理
<a name="asynchronous-error-handling"></a>

非同期リクエストを送信した場合には例外はスローされません。代わりに、返された promise の `then()` または `otherwise()` メソッドを使用して、結果またはエラーを受け取る必要があります。

 **インポート** 

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

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

 **サンプルコード** 

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

promise をラップ解除して、例外がスローされるようにできます。

 **インポート** 

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

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

 **サンプルコード** 

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

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