繁体   English   中英

访问Java堆栈帧

[英]Accessing Java Stack Frame

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

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

这是一个小例子:

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 value,param2 value- -parentMethod:param1 value-

我认为你有一个根本问题。 对于除基元之外的任何其他内容,将传递参数引用 因此, 方法可以更改传递给它的参数值 对堆栈的简单遍历不会解决此问题。

我注意到上面的例子使用了原语和不可变对象。 但是我怀疑你需要更通用的解决方案。 也许某种AOP解决方案可能会起作用,但你仍然需要在调用方法时复制对象(为了记录它们)而且我怀疑一个悲伤的世界。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM