6、advice

看两种advice
     after() returning() : pointcut_expression {}
     after() throwing() : pointcut_expression {}

HelloWorld.java

package aspectj;

public class HelloWorld {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Teacher teacher=new Teacher();
        teacher.second();
        
    }

}

Teacher.java

package aspectj;

public class Teacher {

    public int  second()
    {
        System.out.println("second");
        
        return 1;
    }

}

HelloAspect.aj

package aspectj;

public aspect HelloAspect {
    

    pointcut PrintPointCut() : call(* aspectj.Teacher.second(..));
    
    after() returning( Object o): PrintPointCut() {
        System.out.println("拦截位置"+thisJoinPoint.getSourceLocation()+"object---"+o);
    }
    
}



输出:


image.png

修改Teacher.java

package aspectj;

public class Teacher {

    public int  second()
    {
        System.out.println("second");
        int i=1/0;
        return 1;
    }

}

HelloAspect.aj

package aspectj;

public aspect HelloAspect {
    

    pointcut PrintPointCut() : call(* aspectj.Teacher.second(..));
    
     after() throwing (Exception e): PrintPointCut() {  
         System.out.println("拦截位置"+thisJoinPoint.getSourceLocation()+"exception---"+e); 
        } 
    
}



image.png
around

Teacher.java

package aspectj;

public class HelloWorld {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Teacher teacher=new Teacher();
        int value=teacher.second(2);
        System.out.println("main---"+value);
        
    }

}

HelloWorld.java

package aspectj;

public class HelloWorld {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Teacher teacher=new Teacher();
        int value=teacher.second(2);
        System.out.println("main---"+value);
        
    }

}

HelloAspect.aj

package aspectj;

public aspect HelloAspect {
    

    pointcut PrintPointCut(int x) : execution(* aspectj.Teacher.second(int))&&args(x);
    
    
     int around(int x) : PrintPointCut(x) {
         System.out.println("source---location---"+thisJoinPoint.getSourceLocation());
         System.out.println("pointcut----"+x);
         System.out.println(thisJoinPoint+"-------执行前");
         int newValue=proceed(x*3);
         System.out.println(thisJoinPoint+"-------执行后");
         return newValue;
     }
    
}



输出:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容