【问题标题】:How to include AWS service error codes in a third party project如何在第三方项目中包含 AWS 服务错误代码
【发布时间】:2016-11-21 12:39:15
【问题描述】:

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

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

想要像

那样进行硬编码字符串匹配
AmazonServiceException.getErrorCode().equals("AttachmentLimitExceeded");

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

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 aws-java-sdk


    【解决方案1】:

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

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

    但不幸的是,AmazonEC2Client 没有定义此类特定异常(请参阅代码链接并与上面的AWSSupportClient 进行比较以获取证据)。它只有AmazonEC2ExceptiongetErrorCode 返回String

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


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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-02
      • 2022-12-17
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多