

 适用于 Java 的 AWS SDK 1.x于2025年 end-of-support 12月31日达到。我们建议您迁移到 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) 以继续获得新功能、可用性改进和安全更新。

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

# 异常处理
<a name="java-dg-exceptions"></a>

了解 适用于 Java 的 AWS SDK 抛出异常的方式和时间对于使用 SDK 构建高质量的应用程序非常重要。接下来几节介绍开发工具包引发异常的几种不同情况，以及如何正确地处理这些异常。

## 为什么使用未选中的异常？
<a name="why-unchecked-exceptions"></a>

出于以下原因， 适用于 Java 的 AWS SDK 使用运行时（或未选中）异常而不是已检查的异常：
+ 使开发人员能够精细控制要处理哪些错误，而不是必须处理无关紧要的异常情况（这会导致代码极其冗长）
+ 避免大型应用程序因使用选中的异常而固有的可扩展性问题

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

有关使用选中和未选中的异常的更多信息，请参阅：
+  [未选中的异常 - 争议](http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html) 
+  [使用选中的异常时的问题](http://www.artima.com/intv/handcuffs2.html) 
+  [Java 中选中的异常是一个错误（下文会说明我要如何处理这些异常）](http://radio-weblogs.com/0122027/stories/2003/04/01/JavasCheckedExceptionsWereAMistake.html) 

## AmazonServiceException （和子类）
<a name="amazonserviceexception-and-subclasses"></a>

 [AmazonServiceException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/AmazonServiceException.html)是您在使用时遇到的最常见的异常 适用于 Java 的 AWS SDK。该异常是指来自 AWS 服务的错误响应。例如，如果您尝试终止不存在的 Amazon EC2 实例，EC2 将返回错误响应，并且该错误响应的所有详细信息都将包含在抛出的错误响应中。`AmazonServiceException`在某些情况下，会引发 `AmazonServiceException` 的一个子类，使开发人员能够通过捕获模块精细控制如何处理错误情况。

遇到时`AmazonServiceException`，您就知道您的请求已成功发送到， AWS 服务 但无法成功处理。这可能是因为请求的参数中存在错误，或者是因为服务端的问题。

 `AmazonServiceException` 为您提供很多信息，例如：
+ 返回的 HTTP 状态代码
+ 返回的 AWS 错误码
+ 来自服务的详细错误消息
+  AWS 失败请求的请求 ID

 `AmazonServiceException`还包括有关失败的请求是调用者的错误（具有非法值的请求）还是调用 AWS 服务者的错误（内部服务错误）的信息。

## AmazonClientException
<a name="amazonclientexception"></a>

 [AmazonClientException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/AmazonClientException.html)表示 Java 客户端代码内部出现问题，无论是在尝试向发送请求时 AWS 还是尝试解析来自 AWS的响应时。`AmazonClientException`通常比 a 更严重`AmazonServiceException`，表示存在阻止客户端向 AWS 服务发出服务调用的主要问题。例如，当您尝试在其中一个客户端上调用操作时，`AmazonClientException`如果没有可用的网络连接，则会 适用于 Java 的 AWS SDK 抛出。