Tratamiento de excepciones para el AWS SDK for Java 2.x - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tratamiento de excepciones para el AWS SDK for Java 2.x

Saber cómo y cuándo AWS SDK for Java 2.x produce excepciones es importante para crear aplicaciones de alta calidad con el SDK. En las siguientes secciones se describen los diferentes casos de excepciones que produce el SDK y cómo tratarlas correctamente.

¿Por qué excepciones no controladas?

AWS SDK for Java utiliza excepciones en tiempo de ejecución (o no controladas) en lugar de excepciones controladas por los siguientes motivos:

  • Para permitir a los desarrolladores un control minucioso de los errores que desean administrar sin obligarles a abordar casos excepcionales que no les preocupan (o que les obligan a detallar su código en exceso)

  • Para evitar problemas de escalabilidad inherentes a las excepciones controladas en aplicaciones grandes

En general, las excepciones controladas funcionan bien a pequeña escala, pero pueden ser problemáticas cuando las aplicaciones crecen y se vuelven más complejas.

AwsServiceException (y subclases)

AwsServiceExceptiones la excepción más común que experimentará al AWS SDK for Java usar. AwsServiceExceptiones una subclase de las más generales SdkServiceException. AwsServiceExceptions representan una respuesta de error de unServicio de AWS. Por ejemplo, si intenta terminar una instancia Amazon EC2 que no existe, Amazon EC2 devolverá una respuesta de error y todos los detalles de dicha respuesta de error se incluirán en la excepción AwsServiceException que se produce.

Cuando encuentre una AwsServiceException, sabrá que la solicitud se ha enviado correctamente al Servicio de AWS, pero que no se ha podido procesar correctamente. Esto puede ser debido a errores en los parámetros de la solicitud o a problemas en el servicio.

AwsServiceException proporciona información como:

  • Código de estado HTTP devuelto

  • Código de error de AWS devuelto

  • Mensaje de error detallado del servicio de la AwsErrorDetailsclase

  • ID de solicitud de AWS de la solicitud que ha producido un error

En algunos casos, se produce una subclase de AwsServiceException para permitir a los desarrolladores un control minucioso del tratamiento de casos de error a través de bloques de captura. La referencia de la API del SDK de Java AwsServiceExceptionmuestra la gran cantidad de AwsServiceException subclases. Utilice los enlaces de las subclases para profundizar y ver las excepciones granulares generadas por un servicio.

Por ejemplo, los siguientes enlaces a la referencia API del SDK muestran las jerarquías de excepciones para algunos Servicios de AWS comunes. La lista de subclases que se muestra en cada página muestra las excepciones específicas que su código puede capturar.

Para obtener más información sobre una excepción, inspeccione errorCode el AwsErrorDetailsobjeto. Puede usar el valor errorCode para buscar información en la API de la guía de servicios. Por ejemplo, si se captura un S3Exception y el valor AwsErrorDetails#errorCode() es InvalidRequest, utilice la lista de códigos de error de la Referencia de la API de Amazon S3 para ver más detalles.

SdkClientException

SdkClientExceptionindica que se ha producido un problema en el código del cliente de Java, ya sea al intentar enviar una solicitud AWS o al analizar una respuesta desde élAWS. Una SdkClientException es, por lo general, más grave que una SdkServiceException, e indica un problema importante que impide que el cliente haga llamadas de servicio a los servicios de AWS. Por ejemplo, AWS SDK for Java produce una excepción SdkClientException si no está disponible la conexión de red cuando intenta llamar a una operación en uno de los clientes.

Excepciones y comportamiento de reintentos

El SDK para Java vuelve a intentar las solicitudes de varias excepciones del cliente y de los códigos de estado HTTP que recibe de las respuestas Servicio de AWS. Estos errores se gestionan como parte del RetryMode heredado que los clientes de servicios utilizan de forma predeterminada. La referencia de la API de Java para RetryMode describe las distintas formas de configurar el modo.

Para personalizar las excepciones y los códigos de estado HTTP que activan los reintentos automáticos, configure su cliente de servicio con una RetryPolicy que añada instancias RetryOnExceptionsCondition y RetryOnStatusCodeCondition.