【发布时间】:2012-10-26 16:01:14
【问题描述】:
是否可以通过堆栈框架访问方法参数?
由于我一直在从事的一个项目,我遇到了这种需求。如果发生异常,我想做一些日志记录。如果可能的话,我想递归地记录一个方法的名称和参数,直到我到达“上层”。
这是一个小例子:
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 值-
【问题讨论】:
-
如果孩子“做更多的事情”会怎样
param1++? -
相关的,也许是重复的:stackoverflow.com/questions/4943612/…
-
@leonbloy - 重要吗?这是一个原始的,并按值复制
-
当然,我的意思是,在他想要记录传递的 param1 值的那一刻,它将在此范围内不可用(可能在任何范围内)。如果要记录这些值,则需要在函数调用开始时存储所有参数的副本。
-
如果一个参数被改变了,在改变之后记录它的值是没有问题的。我更关注递归问题中的实际日志记录,它不会在每个异常可能性中进行特定的尝试捕获。处理它们的通用方法,记录当前方法参数及其值,以及方法名称。
标签: java logging parameters stack