Angenommen, ich habe eine Methode, die eine Ausnahme auslöst. Der Exception-throwing-Code liegt in einer Drittanbieterbibliothek, die auf einen externen Dienst zugreift. Ich habe ein paar Klassen, die eine Menge Arbeit mit externen Diensten machen, und es gibt eine Menge von Exception-Behandlung, um mit potenziellen Problemen umzugehen. Das Problem, das ich treffe, ist, dass ich viele Ausnahmen haben kann, aber ich muss vielleicht nur eine der wenigen Aktionen ausführen, wenn es eine gibt, und es gibt eine Tonne von Versuchen/Catch-Blöcken, die gespickt sind. Der Typ der Ausnahme ist möglicherweise nicht einmal relevant, oder verschiedene Methoden können den gleichen Typ von Ausnahme auslösen, aber abhängig von der Methode, die sie auslöst, müssen verschiedene Aktionen ausgeführt werden.Verwenden von Anmerkungen für die Ausnahmebehandlung?
Was ich suche ist eine Annotation, die Versuch/Fang ersetzen kann und diktieren Sie einfach das Verhalten, wenn eine Ausnahme in dieser Methode ist. Ich weiß, dass Spring ApsectJ so etwas tun kann, aber ich bin derzeit nicht in der Lage, einfach neue Abhängigkeiten hinzuzufügen oder den Pom zu modifizieren, um bestehende anzupassen. Daher hoffe ich, dass dies mit einer benutzerdefinierten Anmerkung erreicht werden kann. Zum Beispiel:
Ich würde annehmen, dass eine separate Klasse natürlich Ausnahmen behandeln würde. Eine zusätzliche Schwierigkeit ist, dass ich das ServiceObj, das auch übergeben wird, benötigen würde. Wenn makeThingsHappen() fehlschlägt, muss obj möglicherweise weitere Aktionen ausführen. Die Aktionsvariable teilt der Handler-Klasse mit, was mit obj geschehen soll.
Kann dies ohne schwere Missgunst geschehen, oder hoffe ich auf etwas, das vielleicht nicht existiert?
Anmerkungen verursachen kein eigenständiges Verhalten. Sie sind Metadaten. Sie müssen für sie einen Parser bereitstellen, der dieses Verhalten hinzufügen kann, wenn er sie findet. –
Ich würde es als minderwertigen Schmutz bezeichnen; Es kann trivial mit AOP oder einige Byte-Code-Manipulation behandelt werden. –