我找不到访问异常的:cause, :via和:trace
键的方法。
下面是代码:
(try
(throw (IllegalArgumentException. "1"))
(catch Exception e
e))
输出:
#error{:cause "1",
:via [{:type java.lang.IllegalArgumentException, :message "1", :at [user$eval4073 invokeStatic "form-init5592296091748814678.clj" 1]}],
:trace [[user$eval4073 invokeStatic "form-init5592296091748814678.clj" 1]
[user$eval4073 invoke "form-init5592296091748814678.clj" 1]
[clojure.lang.Compiler eval "Compiler.java" 6927]
[clojure.lang.Compiler eval "Compiler.java" 6890]
[clojure.core$eval invokeStatic "core.clj" 3105]
[clojure.core$eval invoke "core.clj" 3101]
[clojure.main$repl$read_eval_print__7408$fn__7411 invoke "main.clj" 240]
....]}
附言: (:via e) 不起作用。
(binding [*data-readers* {'error identity}] (let [err-data (read-string (pr-str e))] (:via err-data)))
- leetwinski