6

http://richhickey.github.com/clojure/clojure.stacktrace-api.htmlを認識しています。

例外をスローしてキャッチせずに現在のスタックトレースを取得する方法はありますか?

(私はコードの一部をデバッグしており、何が起こっているのかを分析できるように、特定の時点でスタック トレースをキャプチャしたいと考えています。)

ありがとう!

4

2 に答える 2

8

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)
于 2012-05-10T07:29:00.910 に答える
1

このコードは、読み取り可能な形式にするのがそれほど難しくない StackTraceElement 配列を返します。

(.getStackTrace (Thread/currentThread))
于 2013-04-09T12:56:07.570 に答える