的异常处理AWS SDK for Java 2.x - AWS SDK for Java 2.x

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的异常处理AWS SDK for Java 2.x

要使用开发工具包构建高质量的应用程序,必须了解 AWS SDK for Java 2.x 在什么情况下会引发异常以及它以什么方式引发异常。接下来几节介绍开发工具包引发异常的几种不同情况,以及如何正确地处理这些异常。

为什么未经检查的异常?

出于以下原因,AWS SDK for Java 使用运行时 (或取消选中的) 异常而不是选中的异常:

  • 使开发人员能够精细控制要处理哪些错误,而不是必须处理无关紧要的异常情况(这会导致代码极其冗长)

  • 避免大型应用程序因使用选中的异常而固有的可扩展性问题

一般来说,小型应用程序使用选中的异常是可以的,但随着应用程序的大小和复杂程度增加,这样做就会出现问题。

AwsServiceException (和子类)

AwsServiceException是您在使用时会遇到的最常见的异常AWS SDK for Java。 AwsServiceException是更通用的子类SdkServiceExceptionAwsServiceExceptions 表示来自 a 的错误响应AWS 服务。例如,如果您尝试终止不存在的Amazon EC2实例,则Amazon EC2将返回错误响应,并且该错误响应的所有详细信息将包含在引发的错误响应中。AwsServiceException

当你遇到AwsServiceException,你知道你的请求已成功发送到,AWS 服务但无法成功处理。这可能是因为请求的参数中存在错误,或者是因为服务端的问题。

AwsServiceException 为您提供很多信息,例如:

  • 返回的 HTTP 状态代码

  • 返回的AWS错误代码

  • 来自AwsErrorDetails课堂中服务的详细错误消息

  • AWS失败请求的请求 ID

在大多数情况下,会抛出特定于服务的子类,以允许开发人员通过 catch 块对错误案例的处理进行精细控制。AwsServiceException的 Java SDK API 参考AwsServiceException显示了大量的AwsServiceException子类。使用子类链接深入查看服务引发的精细异常。

例如,以下指向 SDK API 参考的链接显示了一些常见的异常层次结构AWS 服务。每个页面上显示的子类列表显示了您的代码可以catch 的特定异常。

要了解有关异常的更多信息,请检查AwsErrorDetails对象errorCode上的。您可以使用该errorCode值在服务指南 API 中查找信息。例如,S3Exception如果捕获到 a 且AwsErrorDetails#errorCode()值为InvalidRequest,则使用 Amazon S3 API 参考中的错误代码列表来查看更多详细信息。

SdkClientException

SdkClientException表示 Java 客户端代码内部出现了问题,要么是在尝试向其发送请求时,要AWS么是在尝试解析来自的响应时AWS。SdkClientException通常比 a 更严重SdkServiceException,表示存在阻止客户端对服务进行服务调用的主要问题。AWS例如,如果您在尝试对一个客户端执行操作时网络连接不可用,AWS SDK for Java会引发 SdkClientException