评论者: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}} {{line}}和{{col}}参数不可用,或者至少不是afaict(据我所知)。