AWS SDK for PHP バージョン 3 でのエラーの処理 - AWS SDK for PHP

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

AWS SDK for PHP バージョン 3 でのエラーの処理

同期エラー処理

オペレーションの実行中にエラーが発生すると、例外がスローされます。そのため、コード内でエラーを処理する必要がある場合は、オペレーションを 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' => 'my-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()); }

非同期エラー処理

非同期リクエストを送信した場合には例外はスローされません。代わりに、返された 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' => 'my-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' => 'my-bucket']);
//throw exception try { $result = $promise->wait(); } catch (S3Exception $e) { echo $e->getMessage(); }