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)
AwsServiceExceptionAwsServiceException
es una subclase de las más generales SdkServiceExceptionAwsServiceException
s 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 AwsErrorDetails
clase -
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 AwsServiceExceptionAwsServiceException
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 AwsErrorDetailserrorCode
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
SdkClientExceptionSdkClientException
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 clienteRetryMode
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
.