2016-07-18 20 views
0

Ich entwickle ein Modul, das den AWS Java SDK-Client intern für EC2-bezogene API-Aufrufe verwendet.So fügen Sie AWS-Service-Fehlercodes in ein Drittanbieterprojekt ein

z. Ich habe eine Anforderung, wo ich ENIs an meine Instanz anhängen muss. Einer der möglichen Fehlercode in diesem API-Aufruf ist AttachmentLimitExceeded, ich möchte eine andere Logik ausführen, wenn dieser bestimmte Fehler ausgelöst wird. Ich weiß, dass ich diesen Fehlercode unter Verwendung AmazonServiceException.getErrorCode() Methode abrufen kann. Aber gibt es ein Jar, das alle möglichen Fehlercode-Strings oder Exception-Klassen enthält, die ich verwenden kann, um solche Fehlercodes zu behandeln, und beispielsweise einen Switch-Fall abhängig von jedem Fehlercode haben kann?

I wollen nicht wie

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

passend eine hartcodierte Zeichenfolge zu tun, da dieser Code-Änderungen benötigen, wie und wann AWS-Codes ihre Fehler ändert. Was ist der Standard Weg, diese error codes in Drittanbieter-Projekt aufzunehmen?

Antwort

0

Ich glaube, dass es keine solche Standardmethode gibt, diese Fehlercodes zu behandeln.

Es hängt viel von dem Service ab, den Sie verwenden. Beispielsweise wird der AttachmentLimitExceeded Fehlercode in dem AWSSupportClient mit dem zugrundeliegenden AttachmentLimitExceededException angezeigt, so dass Sie es abfangen können, wenn Sie beispielsweise addAttachmentsToSet Methode von diesem Dienst verwenden.

Aber leider definiert AmazonEC2Client solche spezifischen Ausnahmen nicht (siehe den Link zum Code und vergleichen Sie mit dem AWSSupportClient oben für die Beweise). Es hat nur die AmazonEC2Exception mit getErrorCode zurückgeben String. Ein anderes Beispiel für einen Client mit vordefinierten spezifischen Ausnahmen ist das AWSSimpleSystemsManagementClient. Schauen Sie sich die Unterklassen der AWSSimpleSystemsManagementException an.


So lautet das Fazit ist, dass, wenn der Dienst Sie interessiert sind keine besonderen Ausnahmen für verschiedene Fehlertypen definieren, können Sie

  • entweder die getErrorCode Methode, wie Sie erwähnt, die ist verständlicherweise unerwünscht
  • oder gar nicht

die Wahl ist hart, aber wahrscheinlich können Sie das Problem durch Co zu dem Fehlercodes verlassen überwinden nfigurieren einer Wiederholungsrichtlinie für benutzerdefinierte Anforderungen