0

我正在开发一个内部使用 AWS Java SDK 客户端进行 EC2 相关 API 调用的模块。

例如,我有一个要求,我需要将 ENI 附加到我的实例。此 api 调用中可能的错误代码之一是AttachmentLimitExceeded,如果抛出此特定错误,我想执行另一个逻辑。我知道我可以使用AmazonServiceException.getErrorCode()方法检索此错误代码。但是是否有任何 jar 包含所有可能的错误代码字符串或异常类,我可以使用它们来处理此类错误代码,并且可以说根据每个错误代码有一个 switch case?

不想做一个硬编码的字符串匹配,比如

AmazonServiceException.getErrorCode().equals("AttachmentLimitExceeded");

因为当 AWS 更改其错误代码时,此代码将需要更改。在第三方项目中包含这些错误代码的标准方法是什么?

4

1 回答 1

1

我相信没有这样的标准方法来处理这些错误代码。

这在很大程度上取决于您使用的服务。例如,提到的AttachmentLimitExceeded错误代码出现在AWSSupportClient底层AttachmentLimitExceededException,因此如果您正在使用例如addAttachmentsToSet来自此服务的方法,则可以捕获它。

但不幸的是,AmazonEC2Client没有定义这样的特定异常(请参阅代码链接并与AWSSupportClient上面的证据进行比较)。它只有AmazonEC2Exceptionwith getErrorCodereturn String

具有预定义特定异常的客户端的另一个示例是AWSSimpleSystemsManagementClient. 查看AWSSimpleSystemsManagementException.


所以底线是,如果您感兴趣的服务没有为不同的错误类型定义特定的异常,您可以

  • 要么使用getErrorCode你提到的方法,这是可以理解的
  • 或者根本不依赖错误代码

选择很艰难,但也许您可以通过配置一些自定义请求重试策略来克服这个问题。

于 2016-11-01T23:59:15.557 回答