由 scottbale 发布的评论
抱歉,我应该提到这个,因为这对我自己来说也不明显(实际上,我直到刚才才记得):RuntimeException已被捕获并封装在CompilerException中。
我不确定这发生在Compiler.java中的哪个try-catch块内,因为有多个。但你可以在输出中看到异常是CompilerException,并且有文件|行|列信息。
在Repl中...
user> (def foo/bar 1) CompilerException java.lang.RuntimeException:有资格的符号 foo/bar 指向不存在的命名空间:foo,编译:(NO_SOURCE_PATH:1:1)
...或者在一个源文件中
user> CompilerException java.lang.RuntimeException:合格符号 goo/bar 指的是不存在的命名空间:goo,编译:(/home/scott/dev/foo.clj:3:1)
此外,在抛出此补丁RuntimeException的点,CompilerException的{{source}} {{行}}和{{列}}参数不可用,或者至少不是afaict(as far as I am concerned)。