Java - Spring AspectJ AfterThrowing

时间:2012-12-06 21:38:16

标签: java spring aop aspectj

我有一个带有以下签名的方法

我希望在通过我的点切割后记录异常,现在当我执行代码时它会在控制台上抛出异常打印然后来到我的点切割定义方法,可能是因为它是@AfterThoring注释但是有没有@BeforeThrowing注释可用吗?请建议我能做什么

public void jingleBell(){
        System.out.println("Jingle Bell Job...");
        throw new RuntimeException("test error");
    }

并遵循切入点的建议

@AfterThrowing(pointcut = "execution(* com.dc.lnwsk.adapter.Search.jingleBell())", throwing = "ex")
            public void handleException(Throwable ex){
                    //Log exception
            }

1 个答案:

答案 0 :(得分:4)

异常与methods不同,在调用点切割方法之前,可以更改( weaved )再见代码以调用新方法。

异常是运行时现象,JVM事先并不知道会抛出一些异常,因此没有@BeforeThrowing

如果您事先知道自己的异常情况,那么最好在切入点方法上使用@Before并处理异常情况。