我正在开发一个模块,该模块内部使用AWS Java SDK客户端进行与EC2相关的API调用。
例如,我有一个要求,需要将ENI附加到我的实例中。这个api调用中可能的错误代码之一是AttachmentLimitExceeded
,如果抛出这个特定错误,我想执行另一个逻辑。我知道我可以使用AmazonServiceException.getErrorCode()
方法检索这个错误代码。但是,有没有一个jar包含了所有可能的错误代码字符串或异常类,我可以用它们来处理这些错误代码,比如说,根据每个错误代码有一个切换案例?
我不想像那样进行硬编码字符串匹配
AmazonServiceException.getErrorCode().equals("AttachmentLimitExceeded");
由于此代码需要在AWS更改其错误代码时进行更改。在第三方项目中包含这些错误代码的标准方法是什么?
我相信没有这样的标准方法来处理这些错误代码。
这在很大程度上取决于您使用的服务。例如,上面提到的AttachmentLimitExceeded
错误代码出现在具有底层AttachmentLimitExceededException
的AWSSupportClient
中,因此,如果您使用该服务的addAttachmentsToSet
方法,则可以捕获它。
但不幸的是,AmazonEC2Client
没有定义这样的特定异常(请参阅代码链接,并与上面的AWSSupportClient
进行比较以获得证据)。它只有AmazonEC2Exception
,getErrorCode
返回String
。
具有预定义特定例外的客户端的另一个示例是AWSSimpleSystemsManagementClient
。看看AWSSimpleSystemsManagementException
的子类。
所以底线是,如果你感兴趣的服务没有为不同的错误类型定义特定的异常,你可以
- 或者使用您提到的
getErrorCode
方法,这是可以理解的 - 或者根本不依赖错误代码
这个选择很难,但您可能可以通过配置一些自定义请求重试策略来克服这个问题。