gpt4 book ai didi

aspectj - 使用 AspectJ 仅拦截 void 返回调用

转载 作者:行者123 更新时间:2023-12-02 00:37:40 26 4
gpt4 key购买 nike

我有一个应该记录的跟踪方面:

  • 进入
  • 退出(返回类型为 void)
  • 返回[返回对象]
  • 抛出[异常消息]

我对第二个有问题。我如何在不重复记录所有退出的情况下为这种情况创建建议,就像现在我有一个 @After 建议和一个 @AfterReturning(value = "publicMethodCall()", returning = "o") 一样.我能否以某种方式为 void 返回调用 @AfterReturning 建议,并在它返回非 void 时仍然检索它的值(可能不是因为无法判断方法是否返回 null 或返回类型是否为 void)。

我猜这应该很容易,但我看不到...

最佳答案

使用 around advice 会更简单。一个切入点/建议对。 (我在这里使用代码风格的 aspectj 语法,因为我更喜欢它)。如果你需要,我可以翻译成@AspectJ 风格:

Object around() : publicMethodCall() {
try {
Object result = proceed();
log(result, thisJoinPoint);
return result;
} catch (Throwable t) {
log(t, thisJoinPoint);
throw t;
}
}

在这里,如果您的方法返回 void,则 result 将为 null

关于aspectj - 使用 AspectJ 仅拦截 void 返回调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959220/

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