Java AspectJ和Spring:当方法抛出异常时,在方法执行后排除@

Java AspectJ和Spring:当方法抛出异常时,在方法执行后排除@,java,spring,aspectj,Java,Spring,Aspectj,我在基于aspectJ的spring中使用了Aspect和Aspect: @After("execution(* ...) public void stopTotalTimerAndMarkSucess(JoinPoint joinPoint) {...} @AfterThrowing("execution(* c ..) public void markError(JoinPoint joinPoint) {...} 当我的under方法抛出和异常时,我需要在执行后排除@。 现在,当方法抛

我在基于aspectJ的spring中使用了Aspect和Aspect:

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

@AfterThrowing("execution(* c ..)
public void markError(JoinPoint joinPoint) {...}
当我的under方法抛出和异常时,我需要在执行后排除@。
现在,当方法抛出异常时,将同时执行(@After和@afterhrowing)。

您需要@AfterReturning注释,而不是@After

@返回后:

返回后,当匹配的方法执行返回时,将运行通知 正常地它是使用@AfterReturning注释(…)声明的

@之后:

然而,在(最终)通知运行之后,将退出匹配的方法执行。 它是使用@After注释声明的。事后诸葛亮 准备好处理正常和异常返回条件。它是 通常用于释放资源等


您需要@After返回注释,而不是@After

@返回后:

返回后,当匹配的方法执行返回时,将运行通知 正常地它是使用@AfterReturning注释(…)声明的

@之后:

然而,在(最终)通知运行之后,将退出匹配的方法执行。 它是使用@After注释声明的。事后诸葛亮 准备好处理正常和异常返回条件。它是 通常用于释放资源等


只是一个简短的说明,如果出于某种原因,您决定用一种方法来做,您可以使用@Around。只是一个简短的说明,如果出于某种原因,您决定用一种方法来做,您可以使用@Around。