gpt4 book ai didi

java - 使用 Spring AOP 处理异常时获取传递给方法的参数值

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:12 26 4
gpt4 key购买 nike

在我的方面类的方法中,我想获取参数的值和参数的名称。如果我没有得到名称仍然可以,但我需要获取传递的参数的值,这可能吗?(ptCut 表达式没有问题,我用 sysouts 检查了该方法)

我的 Aspect 方法是这样的:

    public void excpetionHappened(Exception e) {
// Log the exception
// log the name of the method name/signature which caused the exception
// log the value of the input parameters to the method
// wrap and throw new exctn

}

提前致谢。

最佳答案

您可以使用环绕建议。

这使得在处理异常时访问参数成为可能。

public aspect ExceptionReporterAspect {

/** The name of the used logger. */
public final static String LOGGER_NAME = "AspectJExceptionLogger";

/** Logger used to log messages. */
private static final Log LOGGER = LogFactory.getLog(LOGGER_NAME);

pointcut stringRequestHandler() :
execution (@RequestMapping Object the.package..*(..));

Object around(): objectRequestHandler(){
try {
return proceed();
} catch (Exception ex){
Signature sig = thisJoinPointStaticPart.getSignature();
Object[] args = thisJoinPoint.getArgs();

String location = sig.getDeclaringTypeName() + '.' + sig.getName() + ", args=" + Arrays.toString(args);
LOGGER.warn("(AOP detected) exception within " + location, ex);

throw(ex)
}
}
}

关于java - 使用 Spring AOP 处理异常时获取传递给方法的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9783255/

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