题
什么是最简单的方法,以打印一个堆栈跟踪从一个调试,打印输出?通常是在测试你想知道调用栈前的局势发人深省的一个试的消息。
解决方案
其他提示
如果你使用log4j
Exception e = new Exception();
log.error("error here", e);
将打印堆栈跟踪到你的记录。
如果你要保存栈跟踪到一串你可以做到这一点;
String exception = "";
for (StackTraceElement element : e.getStackTrace())
exception += element.toString() + "\n";
电子显然是一个例外。
此外,它听起来很怪异于自动生成一个自己的异常只是为了找到一个堆栈跟踪一个调试。得到的日食,并用它的调试模式,它真的很棒。
只是创建一种任意的例外没有把戏对我说:
System.out.println("Oops, the bad thing happened");
new IllegalStateException().printStackTrace();
以及为什么@jjnguy说,如果没有一个例外,你还可以打电话线。getStackTrace().
你应该被捕的例外在试图获物区块。
e.getStackTrace();
返回StackTraceElement[],然后你可以解释。
也:
e.printStackTrace()
会...打印堆栈跟踪.
简单的打印目前堆跟踪到stderr,你可以叫:
Thread.dumpStack();
这本身就呼吁:
new Exception("Stack trace").printStackTrace();
输出来 stdout 而不是stderr,通过 System.out
要 printStackTrace()
:
new Exception("Stack trace").printStackTrace(System.out);
只是因为我需要它自己:
作为灵感的答案 我怎么找到的来电的方法的使用堆栈跟踪或反射? 你可以检索的电话堆使用
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
然后你处理和打印/登无论你是感兴趣。更多的工作,比使用 Thread.dumpStack()
, 但更灵活。
不隶属于 StackOverflow