Gestion des exceptions pour AWS SDK for Java 2.x - AWS SDK for Java 2.x

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion des exceptions pour AWS SDK for Java 2.x

Comprendre comment et quand le kit AWS SDK for Java 2.x lève des exceptions est important pour développer des applications de grande qualité à l'aide du kit SDK. Les sections suivantes décrivent les différents cas d'exceptions levées par le kit SDK et la manière de les gérer de manière appropriée.

Pourquoi des exceptions non contrôlées ?

Le kit AWS SDK for Java utilise les exceptions du runtime (ou exceptions non contrôlées) à la place des exceptions contrôlées pour les raisons suivantes :

  • Permettre aux développeurs un contrôle extrêmement précis des erreurs qu'ils veulent gérer sans les forcer à gérer les cas exceptionnels par lesquels ils ne sont pas concernés (rendant alors leur code excessivement détaillé)

  • Pour éviter les problèmes d'évolutivité inhérents aux exceptions contrôlées dans les grandes applications

En général, les exceptions contrôlées fonctionnent bien à petite échelle, mais peuvent devenir problématiques au fur et à mesure que les applications se développent et deviennent plus complexes.

AwsServiceException (et sous-classes)

AwsServiceExceptionest l'exception la plus courante que vous rencontrerez lors de l'utilisation duAWS SDK for Java. AwsServiceExceptionest une sous-classe de la catégorie plus générale SdkServiceException. AwsServiceExceptions représentent une réponse d'erreur provenant d'unService AWS. Par exemple, si vous essayez de mettre fin à une Amazon EC2 instance qui n'existe pas, vous Amazon EC2 renverrez une réponse d'erreur et tous les détails de cette réponse d'erreur seront inclus dans le AwsServiceException message envoyé.

Lorsque vous rencontrez unAwsServiceException, vous savez que votre demande a été envoyée avec succès au Service AWS mais n'a pas pu être traitée avec succès. Cela peut être dû à une erreur des paramètres de la demande ou à un problème côté service.

AwsServiceException vous fournit des informations telles que :

  • Code d'état HTTP retourné

  • Code AWS d'erreur renvoyé

  • Message d'erreur détaillé du service de la AwsErrorDetailsclasse

  • AWSID de demande pour la demande qui a échoué

Dans la plupart des cas, une sous-classe spécifique au service AwsServiceException est créée pour permettre aux développeurs de contrôler avec précision la gestion des cas d'erreur par le biais de « catch blocks ». La référence de l'API du SDK Java pour AwsServiceExceptionaffiche le grand nombre de AwsServiceException sous-classes. Utilisez les liens des sous-classes pour effectuer une analyse détaillée des exceptions générées par un service.

Par exemple, les liens suivants vers la référence de l'API du SDK présentent les hiérarchies d'exceptions pour certaines exceptions courantes. Services AWS La liste des sous-classes figurant sur chaque page indique les exceptions spécifiques que votre code peut intercepter.

Pour en savoir plus sur une exception, errorCode inspectez l'AwsErrorDetailsobjet. Vous pouvez utiliser cette errorCode valeur pour rechercher des informations dans l'API du guide des services. Par exemple, si un S3Exception est détecté et que sa AwsErrorDetails#errorCode() valeur est le casInvalidRequest, utilisez la liste des codes d'erreur dans le manuel Amazon S3 API Reference pour obtenir plus de détails.

SdkClientException

SdkClientExceptionindique qu'un problème s'est produit dans le code du client Java, soit lors de la tentative d'envoi d'une demande, AWS soit lors de la tentative d'analyse d'une réponse deAWS. Un SdkClientException est généralement plus grave qu'un SdkServiceException et indique un problème majeur qui empêche le client de faire des appels de service aux AWS services. Par exemple, le kit AWS SDK for Java génère une exception SdkClientException si aucune connexion réseau n'est disponible lorsque vous essayez d'appeler une opération sur l'un des clients.

Exceptions et comportement en cas de nouvelle tentative

Le SDK for Java réessaie les demandes relatives à plusieurs exceptions côté client et aux codes d'état HTTP qu'il reçoit des réponses. Service AWS Ces erreurs sont traitées dans le cadre de l'héritage RetryMode que les clients du service utilisent par défaut. La référence de l'API Java pour RetryMode décrit les différentes manières de configurer le mode.

Pour personnaliser les exceptions et les codes d'état HTTP qui déclenchent des tentatives automatiques, configurez votre client de service avec un RetryPolicy ajout RetryOnExceptionsCondition et des RetryOnStatusCodeCondition instances.