评论: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: Qualified symbol goo/bar refers to nonexistent namespace: goo, compiling:(/home/scott/dev/foo.clj:3:1)
此外,在这个补丁的RuntimeException被抛出的点上,CompilerException的{{source}} {{line}}和{{col}}参数不可用,或者至少不是afaict。