Je donne les résultats suivants:Pourquoi @AfterReturning n'est-il exécuté qu'après @AfterThrowing en cas d'exception?
@AfterReturning("executionOfTrustedAnnotatedMethod()")
public void afterReturningFromTrustedMethodExecution() { ... }
@AfterThrowing(pointcut = "executionOfTrustedAnnotatedMethod()")
public void afterThrowingByExecutionOfTrustedAnnotatedMethod() { ... }
Et Im observant ce comportement qui n'a pas de sens pour moi:
- Si la méthode capturée par ce pointcut ne jette pas une exception, @AfterReturning est exécuté
- Si la méthode renvoie une exception, @AfterReturning est exécutée seulement si @AfterThrowing existe et est exécuté en premier
Ce que j'essaye d'accomplir est d'exécuter du code à la fin de l'exécution d'une méthode indépendamment de si une exception a été levée ou non. Mais maintenant ce code s'exécute deux fois (si j'ai à la fois afterReturning et afterThrowing) ou pas du tout (si j'ai seulement afterReturning) si une exception est levée.
Des suggestions?
Merci, Piotr
Parfait! Merci;) Avez-vous une idée pourquoi j'ai eu ce comportement étrange? Juste par curiosité. –
@Piotr: Je ne sais pas. Ça a l'air étrange, en effet. – axtavt