Exception handling 如何访问`clojure.lang.Compiler$CompilerException`实例的行变量?
尝试访问Exception handling 如何访问`clojure.lang.Compiler$CompilerException`实例的行变量?,exception-handling,clojure,introspection,Exception Handling,Clojure,Introspection,尝试访问clojure.lang.Compiler$CompilerException实例的line变量失败,但在检查异常时,我可以清楚地看到line变量存在。例如: user=> (try #_=> (load-string "(+ 2 3)\n(- 3 4)\n())") #_=> (catch clojure.lang.Compiler$CompilerException er #_=> (. er line))) IllegalArgu
clojure.lang.Compiler$CompilerException
实例的line
变量失败,但在检查异常时,我可以清楚地看到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
时
不访问行
变量,只返回异常,实际上会显示该行
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)>
user=>(尝试
#_=>(加载字符串“(+23)\n(-34)\n())”)
#_=>(catch clojure.lang.Compiler$CompilerException编译器
#_=>er)
#
发生什么事了
编辑:在clojure 1.4.0上使用直到1.5.0关闭时才添加行成员
您必须更新到Clojure 1.5.0才能访问此成员。直到1.5.0关闭时才添加行成员 您必须更新到Clojure 1.5.0才能访问此成员