gpt4 book ai didi

java - Spring AOP-@AfterThrowing

转载 作者:行者123 更新时间:2023-11-30 08:45:43 25 4
gpt4 key购买 nike

当我的系统抛出异常时,应该调用下面的方法,但事实并非如此。它仅在我从注释中删除“throwing”并将“Exception”作为参数时才有效:

不起作用:

@AfterThrowing(pointcut="execution(public * br.com.ogfi.*.controller.*.*(..))", throwing="e")
public void afterThrowing(Exception e) {
System.out.println("Test");
}

作品:

@AfterThrowing(pointcut="execution(public * br.com.ogfi.*.controller.*.*(..))")
public void afterThrowing() {
System.out.println("Test");
}

有人知道我做错了什么吗?

这是整个类(class):

package br.com.ogfi.portalbackoffice.aspect;

import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class AfterThrowAdvice {


@AfterThrowing(pointcut="execution(public * br.com.ogfi.*.controller.*.*(..))", throwing="e")
public void afterThrowing(Exception e) {
System.out.println("Boo! We want our money back!");
//ex.printStackTrace();
//System.out.println("Boo! We want our money back!");

}

}

最佳答案

最后我找到了它不工作的原因:

我正在使用的 java 项目有自己的异常,称为 SystemException,与 javax.transaction.SystemException 同名,我还没有意识到它不是来自 javax。

我项目中的 SystemException 扩展了 Throwable,当我尝试使用 Exception 作为参数时,我的方法没有被调用,因为不是同一回事。

关于java - Spring AOP-@AfterThrowing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com