我不明白在这种情况下为什么应用建议@After
而不是@AfterThrowing
的原因:
@Pointcut("execution(* componentB.Bye.run())")
public void newThread(){
}
@After("newThread()")
public void cokolwiek2(JoinPoint joinPoint){
report(joinPoint);
}
@AfterThrowing(pointcut="newThread()",throwing="e")
public void itsAFoo(JoinPoint joinPoint, RemoteException e) {
logger.error(joinPoint.getSignature().toLongString() + " exception here!");
}
我确信会抛出异常:
public String greeting(String c) throws RemoteException,
InterruptedException {
throw new RemoteException();
//return "Good morning!";
}
但是
exception here!
没有日志 最佳答案
切入点execution(* componentB.Bye.run())
不覆盖方法public String greeting(String c)
。@After
和@AfterThrowing
的区别在于,仅当发生异常时才调用@AfterThrowing
,而如果引发异常或成功返回方法,则调用@After
。因此,如果有例外,并且您都有两个建议,则两个都将被执行。