2016-07-25 23 views
0
eine Ausnahme auslöst

ich habe und Aspect im Frühjahr basierend auf aspectj:AspectJ und Spring: Ausschließen @After Methode Ausführung, wenn Methode

@After("execution(* ...) 
public void stopTotalTimerAndMarkSucess(JoinPoint joinPoint) {...} 

@AfterThrowing("execution(* c ..) 
public void markError(JoinPoint joinPoint) {...} 

Ich brauche @After Ausführung, wenn meine unter Methode löst und Ausnahme auszuschließen. Nun, wenn eine Methode eine Ausnahme auslöst, werden beide (@After und @AfterThrowing) ausgeführt.

Antwort

2

Sie benötigen @AfterReturning Annotation lieber als @After.

@AfterReturning:

nach einer Beratung der Rückkehr läuft, wenn ein angepaßtes Verfahren Ausführung normalerweise zurückgibt. Es wird erklärt, die @AfterReturning Annotation mit (...)

@After:

Nach (endlich) Beratung läuft jedoch ein angepasstes Verfahren tritt die Abarbeitung. Es wird mit der @After-Annotation deklariert. Nach der Empfehlung muss bereit sein, sowohl normale als auch Ausnahme-Rückgabebedingungen zu behandeln. Es ist typisch für die Freigabe Ressourcen, etc. verwendet

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html

+0

nur eine kurze Nachricht, wenn aus irgendeinem Grund Sie es in einem Verfahren zu tun, Sie @Around nutzen könnten. – Sarief