Behandlung von Fehlern in der AWS SDK für PHP Version 3 - AWS SDK für PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Behandlung von Fehlern in der AWS SDK für PHP Version 3

Synchrone Fehlerbehandlung

Wenn beim Ausführen einer Operation ein Fehler auftritt, wird eine Ausnahme ausgelöst. Aus diesem Grund verwenden Sie zur Behandlung von Fehlern in Ihrem Code try/catch-Blöcke um Ihre Operationen herum. Das SDK löst servicespezifische Ausnahmen aus, wenn ein Fehler auftritt.

Das folgende Beispiel verwendet die Aws\S3\S3Client. Wenn ein Fehler vorliegt, wird die ausgelöste Ausnahme vom Typ Aws\S3\Exception\S3Exception sein. Alle servicespezifischen Ausnahmen, die das SDK auslöst, erstrecken sich von der Klasse Aws\Exception\AwsException. Diese Klasse enthält nützliche Informationen zum Fehler einschließlich der Anforderungs-ID, des Fehlercodes und des Fehlertyps. Für einige Services, die diese Klasse unterstützen, werden Antwortdaten in eine assoziative Array-Struktur (ähnelt Aws\Result-Objekten) umgewandelt, auf die wie auf normale assoziative PHP-Arrays zugegriffen werden kann. Die Methode toArray() gibt Daten dieser Art zurück (sofern vorhanden).

Importe

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException; use Aws\S3\Exception\S3Exception;

Beispiel-Code

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

Asynchrone Fehlerbehandlung

Ausnahmen werden nicht ausgelöst, wenn das Senden von asynchronen Anforderungen. Stattdessen müssen Sie die Methode then() oder otherwise() des zurückgegebenen Promise verwenden, um das Ergebnis oder den Fehler zu erhalten.

Importe

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException; use Aws\S3\Exception\S3Exception;

Beispiel-Code

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

Sie können das Promise „auspacken“ und stattdessen die Ausnahme auslösen.

Importe

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException; use Aws\S3\Exception\S3Exception;

Beispiel-Code

$promise = $s3Client->createBucketAsync(['Bucket' => 'my-bucket']);
//throw exception try { $result = $promise->wait(); } catch (S3Exception $e) { echo $e->getMessage(); }