【发布时间】:2014-05-19 15:58:43
【问题描述】:
在 Clojure 的 Joy of Clojure 和 Alex Miller 的 Pure Danger Tech blog-post 中,建议您可以使用以下内容打印最后一个堆栈:
(use 'clojure.stacktrace)
(java.util.Date. "foo")
(.printStackTrace *e 5)
但我无法让他们的任何示例起作用,而是得到了
java.lang.NullPointerException: null
Reflector.java:26 clojure.lang.Reflector.invokeInstanceMethod
(Unknown Source) jtown$eval9755.invoke
这是怎么回事? .printStackTrace 从外观上看似乎是一个 Java 函数,所以我不确定为什么我首先要将 clojure.stacktrace 带入我的命名空间。不过,我通读了 clojure.stacktrace API,看到了一个 e 函数,它看起来也很相似,但不是 *e 函数,它在核心中,应该绑定到最后一个异常,但不是。有人可以让我了解检查堆栈跟踪的最佳方法吗?
【问题讨论】:
标签: java api clojure interop stack-trace