我不明白在这种情况下为什么应用建议@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。因此,如果有例外,并且您都有两个建议,则两个都将被执行。

10-04 12:00