gpt4 book ai didi

java - Java 在运行时捕获方法的参数

转载 作者:行者123 更新时间:2023-11-29 06:45:42 26 4
gpt4 key购买 nike

我们的应用程序使用多个后端服务,我们维护包装器,其中包含进行实际服务调用的方法。如果在调用服务时这些方法中的任何一个发生任何异常,我们将抛出一个封装原始异常的自定义异常,如下所示。

interface IServiceA {
public void submit(String user, String attributes);
}

public class ServiceAWrapper implements IserviceA {
private ActualService getActualService() {
.....
}

public void submit(String user, String attributes) {
try {
Request request = new Request();
request.setUser(user);
request.setAttributes(attributes);
getActualService().call(request);
} catch(ServiceException1 e) {
throw new MyException(e, reason1);
} catch(ServiceException2 e) {
throw new MyException(e, reason2);
}
}
}

我想知道是否有任何框架可以让我这样做

  1. 捕获(并可能记录)所有传递给我的包装器的参数运行时的方法;如果方法被称为。
  2. 捕获实际异常对象(上面的MyException实例例如),如果有的话;所以我可以附加传递的参数在运行时传递给对象。

我目前正在研究 AspectJ 以查看它是否可以满足我的要求,但我不确定它是否可以用于在运行时捕获传递给方法的参数以及捕获异常对象(如果有的话)。

谢谢。

最佳答案

使用 AspectJ,您可以 use around advice在连接点执行建议而不是代码。然后,您可以通过调用 proceed 从建议中执行实际的连接点。这将允许您捕获输入参数,记录它们,然后继续调用实际方法。

在相同的建议中,您可以捕获从该方法抛出的任何日志,并在将其传递回更高级别之前检查或记录它们。

关于java - Java 在运行时捕获方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5409453/

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