很多时候,当我尝试编写某些函数时,会出现异常。这是很正常的。在Java中,您可以查找异常发生的位置和原因,但在Clojure中,异常文本让我感到困惑。有什么技巧可以帮助我阅读Clojure中的异常,并找到代码中异常发生的位置和原因吗?
例如,我将采取一些代码:
当我在REPL中调用此函数时,我将获得:
例如,我将采取一些代码:
(do
(list?)
(list? [])
(list? '(1 2 3))
(list? (defn f [] (do ())))
(list? "a"))
当我在REPL中调用此函数时,我将获得:
java.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$list-QMARK- (NO_SOURCE_FILE:46)
第二行的问题很难通过此类信息找到原因,当代码稍微有些复杂时,它几乎无法提供任何信息。(当然,有时会提示查看列表中是否存在参数错误。)我在REPL中编写代码是错误的吗?如何在REPL中阅读异常信息?有办法在REPL中获得更好的异常信息吗?