我需要捕获一个捕获的异常并获取一个字符串,该字符串将使用 printStackTrace()
打印。
看起来最简单的事情是调用 printStackTrace(X)
,其中 X 是 PrintStream
或 PrintWriter
的子类,并将其收集到一个 StringBuilder
并且可以返回一个 String
。
这样的事情存在吗?如果没有,有什么建议如何做到这一点吗?
编辑:skaffman 发布了一个使用 getStackTrace()
的解决方案。 (您或版主可以取消删除吗?)这实际上是唯一“正确”工作的解决方案。在 StringWriter 之上使用 PrintWriter 的问题是,尽管它工作起来很容易,但对于深堆栈跟踪,它不会打印所有元素。
最佳答案
你想要的是StringWriter
您可以将其传递到 PrintWriter 的构造函数中,然后调用 StringWriter 的 getBuffer() 或 toString() 来获取最终的字符串。
关于java:StringBufferOutputWriter还是StringBufferOutputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1752263/