我使用 {{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]}