我如何在Java中将堆栈跟踪添加到调试打印输出中
时间:2020-03-05 18:50:57 来源:igfitidea点击:
从调试打印输出中打印堆栈跟踪的最简单方法是什么?通常,在测试过程中,我们希望了解导致出现调试消息的情况的调用堆栈。
解决方案
回答
我们应该在try-catch块中捕获异常。
e.getStackTrace();
这将返回我们可以解释的StackTraceElement []。
还:
e.printStackTrace()
将...打印堆栈跟踪。
回答
仅仅创建一个任意的异常对我来说就可以了:
System.out.println("Oops, the bad thing happened"); new IllegalStateException().printStackTrace();
回答
就像@jjnguy所说的一样,如果没有异常,还可以调用Thread.getStackTrace()。
回答
Thread.dumpStack();
回答
如果要将堆栈跟踪保存到字符串中,则可以执行此操作;否则,请执行以下操作。
String exception = ""; for (StackTraceElement element : e.getStackTrace()) exception += element.toString() + "\n";
显然,e是个例外。
此外,自动生成一个自己的Exception(异常)只是为了找到调试的堆栈跟踪听起来很奇怪。获取Eclipse并使用它的调试模式,这真的很棒。
回答
如果我们使用的是log4j
Exception e = new Exception(); log.error("error here", e);
将stacktrace打印到日志中。
回答
只是因为我自己需要它:
受到答案的启发,如何使用stacktrace或者反射找到方法的调用者? ,我们可以使用来检索调用堆栈
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
然后,我们可以处理和打印/记录任何我们感兴趣的内容。比使用Thread.dumpStack()
更多的工作,但是更灵活。