line
インスタンスの変数にアクセスしようとするとclojure.lang.Compiler$CompilerException
失敗しますが、例外のコードを調べると、行変数が存在することがはっきりとわかります。例えば:
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 での使用