我正在使用Clojure,并且希望获得可以记录的堆栈跟踪信息(理想情况下,我想将其作为String获取)。

我看到(.getStackTrace e)返回一个StackTraceElement[],但是我不知道如何打印出有意义的内容。我的第二种方法是使用PrintWriter作为参数的(.printStackTrace e)(因为我知道这在Java中是可能的),但是我似乎没有获得正确的语法。

谢谢。

最佳答案

如果number23_cn的解决方案太多了,这就是您可以如何将.getStackTrace的结果用作字符串(然后可以将其打印,放入日志等)

(try (/ 1 0)
  (catch Throwable t
    (map str (.getStackTrace t))))

09-13 11:15