获得Clojure Stacktrace

时间:2012-05-10 07:11:32

标签: clojure

我知道http://richhickey.github.com/clojure/clojure.stacktrace-api.html

有没有办法让当前的堆栈跟踪没有引发异常并捕获它?

(我正在调试一段代码,并希望在某些点捕获堆栈跟踪,以便我可以分析正在发生的事情。)

谢谢!

2 个答案:

答案 0 :(得分:7)

使用clojure.repl.pst

user=> (try (/ 1 0) (catch Exception e (pst e)))
ArithmeticException Divide by zero
    clojure.lang.Numbers.divide (Numbers.java:156)
    clojure.lang.Numbers.divide (Numbers.java:3691)
    user/eval28 (NO_SOURCE_FILE:8)
    clojure.lang.Compiler.eval (Compiler.java:6511)
    clojure.lang.Compiler.eval (Compiler.java:6477)
    clojure.core/eval (core.clj:2797)
    clojure.main/repl/read-eval-print--6569 (main.clj:245)
    clojure.main/repl/fn--6574 (main.clj:266)
    clojure.main/repl (main.clj:266)
    clojure.main/repl-opt (main.clj:332)
    clojure.main/main (main.clj:427)
    clojure.lang.Var.invoke (Var.java:423)

答案 1 :(得分:1)

此代码返回StackTraceElement数组,这对turn in readable form来说并不那么难:

(.getStackTrace (Thread/currentThread))