As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tratamento de exceções para o AWS SDK for Java 2.x
Compreender como e quando o AWS SDK for Java 2.x lança exceções é importante para compilar aplicativos de alta qualidade usando o SDK. As seções a seguir descrevem os casos diferentes de exceções lançadas pelo SDK e como processá-las da maneira apropriada.
Por que exceções desmarcadas?
O AWS SDK for Java usa exceções de tempo de execução (ou desmarcadas), em vez de exceções marcadas por estes motivos:
-
Como permitir que desenvolvedores controlem os erros que desejam processar sem forçá-los a processar casos excepcionais com os quais não estão preocupados (e tornar o código excessivamente detalhado)
-
Para evitar problemas de escalabilidade inerentes a exceções marcadas em aplicativos grandes
Em geral, as exceções marcadas funcionam bem em escalas pequenas, mas podem se tornar problemáticas à medida que os aplicativos crescem e se tornam mais complexos.
AwsServiceException (e subclasses)
AwsServiceExceptionAwsServiceException
é uma subclasse das mais gerais SdkServiceExceptionAwsServiceException
s representam uma resposta de erro de umAWS service (Serviço da AWS). Por exemplo, se você tentar encerrar uma instância do Amazon EC2 que não existe, o Amazon EC2 retornará uma resposta de erro, e todos os detalhes dessa resposta de erro serão incluídos na AwsServiceException
lançada.
Ao encontrar um AwsServiceException
, você sabe que a requisição foi enviada com êxito para o AWS service (Serviço da AWS), mas não foi possível processá-la com êxito. Isso pode ocorrer devido a erros nos parâmetros da solicitação ou problemas no lado do serviço.
AwsServiceException
fornece informações como:
-
Código de status HTTP retornado
-
Código de erro da AWS retornado
-
Mensagem de erro detalhada do serviço na AwsErrorDetails
classe -
ID de requisição da AWS para a requisição com falha
Para alguns casos, uma subclasse de AwsServiceException
específica do serviço é lançada para permitir que os desenvolvedores tenham o controle refinado do tratamento dos casos de erro nos blocos catch. A referência da API Java SDK para AwsServiceExceptionAwsServiceException
subclasses. Use os links da subclasse para detalhar e ver as exceções granulares lançadas por um serviço.
Por exemplo, os links a seguir para a referência da API do SDK mostram as hierarquias de exceções de alguns Serviços da AWS comuns. A lista de subclasses mostrada em cada página mostra as exceções específicas que seu código pode capturar.
Para saber mais sobre uma exceção, inspecione errorCode
o AwsErrorDetailserrorCode
para pesquisar informações na API do guia de serviços. Por exemplo, se uma S3Exception
for detectada e o valor de AwsErrorDetails#errorCode()
for InvalidRequest
, use a lista de códigos de erro na Referência da API do Amazon S3 para ver mais detalhes.
SdkClientException
SdkClientExceptionSdkClientException
normalmente é mais grave do que um SdkServiceException
e indica um problema grave que esteja evitando que o cliente faça chamadas de serviço para serviços da AWS. Por exemplo, o AWS SDK for Java lançará um SdkClientException
se nenhuma conexão de rede estiver disponível quando você tentar chamar uma operação em um dos clientes.
Exceções e comportamento de nova tentativa
O SDK for Java faz novas tentativas de solicitações para várias exceções do lado do clienteRetryMode
legado que os clientes de serviço usam por padrão. A referência da API Java para RetryMode
descreve as várias maneiras pelas quais você pode configurar o modo.
Para personalizar as exceções e os códigos de status HTTP que acionam novas tentativas automáticas, configure seu cliente de serviço com uma RetryPolicy
que adicione instânciasRetryOnExceptionsCondition
e RetryOnStatusCodeCondition
.