gpt4 book ai didi

java - 访问 Java 堆栈帧

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

是否可以通过堆栈帧访问方法参数?

由于我一直在从事的一个项目,我遇到了这种需求。如果出现异常,我想做一些日志记录。如果可能的话,我想递归地记录方法的名称和参数,直到到达“上层”。

这是一个小例子:

class Parent{

public int parentMethod(int param1) {
String param2;
Child child = new Child();
(...)some Work(...)
int ret = child.childMethod(param1, param2);
(...)some More Work(...)
return ret;
}
}


class Child{
public int childMethod(int param1, String param2) {
(...) do more stuff (...)
try {
(...) this might generate an exception(...)
}catch(Exception e) {
(...) log method name and parameters value(...)
}
}
}

因此在这种情况下,我想记录以下内容:-childMethod:param1值,param2值--parentMethod:param1值-

最佳答案

我认为你有一个根本性的问题。对于除原语之外的任何内容,都会传递参数引用。因此,方法可以更改传递给它的参数值。简单地遍历堆栈并不能解决这个问题。

我注意到上面的示例使用基元和不可变对象(immutable对象)。不过我怀疑您需要一个更通用的解决方案。也许某种 AOP 解决方案可能有效,但您仍然必须在调用方法时复制对象(以便记录它们),我预见到一个悲伤的世界。

关于java - 访问 Java 堆栈帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090391/

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