Tratamento de exceções para o AWS SDK for Java 2.x - AWS SDK for Java 2.x

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)

AwsServiceExceptioné a exceção mais comum que você enfrentará ao usar AWS SDK for Java o. AwsServiceExceptioné uma subclasse das mais gerais SdkServiceException. AwsServiceExceptions 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 AwsErrorDetailsclasse

  • 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 AwsServiceExceptionexibe o grande número de AwsServiceException 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 AwsErrorDetailsobjeto. Você pode usar o valor do errorCode 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

SdkClientExceptionindica que ocorreu um problema dentro do código do cliente Java, ao tentar enviar uma solicitação para AWS ou ao tentar analisar uma resposta deAWS. Um SdkClientException 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 cliente e para códigos de status HTTP que ele recebe das respostas do AWS service (Serviço da AWS). Esses erros são tratados como parte do RetryMode 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.