Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Aspectj(使用spring)-只在抛出方法上记录一次异常抛出,而不记录传播的方法_Java_Spring_Exception_Aspectj_Spring Aop - Fatal编程技术网

Java Aspectj(使用spring)-只在抛出方法上记录一次异常抛出,而不记录传播的方法

Java Aspectj(使用spring)-只在抛出方法上记录一次异常抛出,而不记录传播的方法,java,spring,exception,aspectj,spring-aop,Java,Spring,Exception,Aspectj,Spring Aop,我们刚刚为所有服务方法实现了一个日志方面。 我们还实现了异常抛出日志记录 问题在于我们是否有以下情况: ClassA.method1调用ClassB.method2调用ClassC.method3 方法3抛出一个异常 现在发生的是-我们在method3、method2和method1中记录了异常抛出。 这种扩张是传播的,因此从每个 我们如何才能实现我的方面只处理最后一个抛出异常method3的方法 谢谢 AspectJ中描述了类似的解决方案。可以实现很多功能,比如记录方法名、参数等,但为了简单起

我们刚刚为所有服务方法实现了一个日志方面。 我们还实现了异常抛出日志记录

问题在于我们是否有以下情况:

ClassA.method1调用ClassB.method2调用ClassC.method3 方法3抛出一个异常

现在发生的是-我们在method3、method2和method1中记录了异常抛出。 这种扩张是传播的,因此从每个

我们如何才能实现我的方面只处理最后一个抛出异常method3的方法


谢谢

AspectJ中描述了类似的解决方案。可以实现很多功能,比如记录方法名、参数等,但为了简单起见:

public aspect ExceptionAspect {
    private Log log = Logger.getLogger("error_log");
    private Exception exception;

    pointcut exceptionPointcut() : execution(* my.package..*(..));

    after() throwing(Exception ex) : exceptionPointcut() {
        if (exception != ex) {
            exception = ex;
            log.error("ERROR: {}", ex);
        }
    }
}

你在使用什么样的建议?