Tag: stack trace

获取包含内部exception的完整字符串堆栈跟踪

Java的e.printStackTrace()不会打印内部exception堆栈跟踪的所有细节。 有没有一种现成的方法来以字符串forms生成完整的堆栈跟踪? (除了自己格式化) 编辑 我刚刚发现了printStackTrace()的作用 – 显然它过滤掉的堆栈帧正是内部exception和外部exception共有的堆栈帧。 所以实际上它是我想要的,而不是“完整”的堆栈跟踪。

Java:如何将参数传递给调用此方法的方法?

在java中,可以获取调用当前方法的类和方法(获取StackTrace的方法)。 我的问题是,我可以获取传递给调用此方法的方法的参数吗? 我需要这个用于调试目的。 例如: baseClass { initialFunc(input) { var modifiedInput = input + ” I modified you”; otherClass.doSomething(modifiedInput); } } otherClass { doSomething(input) { //GET THE ARGUMENTS PASSED TO THE METHOD OF THE CLASS THAT CALLED THIS METHOD } } 可以从堆栈跟踪中获取此信息,还是有其他方法? (注意,我需要能够在运行时执行此操作,并且实际上无法更改baseClass的源代码,这将是我的调试类的一个function,它不会事先知道源代码) 谢谢。

Log4j格式化:是否可以截断堆栈跟踪?

我想在我的程序中仅记录Exceptions的前几行。 我知道,我可以做这样的事情只打印堆栈跟踪的前5行: Throwable e = …; StackTraceElement[] stack = e.getStackTrace(); int maxLines = (stack.length > 4) ? 5 : stack.length; for (int n = 0; n < maxLines; n++) { System.err.println(stack[n].toString()); } 但我宁愿使用log4j(或更精确的log4j上的slf4j)进行日志记录。 有没有办法告诉log4j它应该只打印堆栈跟踪的前5行?