我使用 {{org.clojure/tools.namespace "0.3.0-alpha4"}} 来检测任意对象之间的循环依赖。它运行良好,但在某种情况下,错误信息可以更加详细。
{:type clojure.lang.ExceptionInfo
:message "x 和 y 之间存在循环依赖."
:data {:reason :clojure.tools.namespace.dependency/circular-dependency, :node x, :dependency y}
:at [clojure.core$ex_info invokeStatic "core.clj" 4617]}
{{x}} 和 {{y}} 是被隐藏的数据。
问题是,x 或 y 都不是直接依赖于对方,而是通过间接路径。
如果异常本身能够告知完整的错误路径,而不仅仅是开始和结束,那将非常有用。
期望的异常示例
:data {:reason :clojure.tools.namespace.dependency/circular-dependency, :node x, :dependency y, :path [x a b c y]}