3

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

  • 进入
  • 退出(返回类型为无效)
  • 返回[返回的对象]
  • Throwinig [异常消息]

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

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

4

1 回答 1

3

使用周围的建议会更简单。一对切入点/建议。(我在这里使用代码样式 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.

于 2010-10-19T20:16:25.160 回答