尝试访问line
实例的clojure.lang.Compiler$CompilerException
变量失败,但当我检查the code异常时,我可以清楚地看到行变量存在。例如:
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上使用