2

尝试访问实例的line变量clojure.lang.Compiler$CompilerException失败,但是当我检查异常代码时,我可以清楚地看到 line 变量存在。例如:

user=> (try
  #_=>   (load-string "(+ 2 3)\n(- 3 4)\n())")
  #_=>   (catch clojure.lang.Compiler$CompilerException er
  #_=>     (. er line)))
IllegalArgumentException No matching field found: line for class clojure.lang.Compiler$CompilerException  clojure.lang.Reflector.getInstanceField (Reflector.java:271)

当我反而期望3成为结果时。

不访问line变量,只是返回异常实际上向我显示了这条线!

user=> (try
  #_=>   (load-string "(+ 2 3)\n(- 3 4)\n())")
  #_=>   (catch clojure.lang.Compiler$CompilerException er
  #_=>     er))
#<CompilerException java.lang.RuntimeException: Unmatched delimiter: ), compiling:(null:3)>

这是怎么回事?

编辑:在 clojure 1.4.0 上使用

4

1 回答 1

4

在关闭CLJ-788的此提交中,直到 1.5.0 才添加行成员。

您必须更新到Clojure 1.5.0才能访问该成员。

于 2013-06-20T01:28:54.733 回答