评论者:scottbale
抱歉,我应该提到这一点,因为对我来说这也不是显而易见的(事实上,我直到现在才想起来):RuntimeException 已经被捕获,并包含在一个 CompilerException 中。
我不确定 Compiler.java 中的哪个 try-catch 块发生了这种情况,有很多个。但你可以从输出中看到异常是 CompilerException,并且文件|行|列信息在这里。
在 Repl...
user> (def foo/bar 1) CompilerException java.lang.RuntimeException: Qualified symbol foo/bar refers to nonexistent namespace: foo, compiling:(NO_SOURCE_PATH:1:1)
...或者在源文件中
user=> CompilerException java.lang.RuntimeException: 有资格的符号 goo/bar 指向不存在的命名空间:goo, 编译:(/home/scott/dev/foo.clj:3:1)
此外,在抛出此补丁 RuntimeException 的点,CompilerException 的 {{source}} {{line}} 和 {{col}} 参数不可用,或者至少不是这样说的。