在动态var的验证错误上指定错误消息?

时间:2012-02-29 17:56:03

标签: clojure

使用set时是否有任何方法指定错误消息 - 验证器!动态变量?

在这种情况下:

(binding [*my-var* -1]
  (foo))

我希望能够在尝试绑定时抛出自定义异常 到负数。

使用set-validator!像这样,将忽略异常消息:

(set-validator! #'*d* (fn [x] (if (< x 0) (throw (Exception. "*my-var*
can only be bound to a non-negative number")) true)))

相反,您在REPL上看到的消息是: java.lang.IllegalStateException:无效的引用状态 (NO_SOURCE_FILE:0)

有没有办法在a的验证错误上指定错误消息 动态变量?

1 个答案:

答案 0 :(得分:1)

如果使用RuntimeException而不是Exception,则错误消息将是RuntimeException内的消息。

(set-validator! #'*d* (fn [x] (if (< x 0) (throw (RuntimeException. "*my-var*
can only be bound to a non-negative number")) true)))