2012-02-29 53 views
1

当使用set- 验证程序时,是否有任何方法指定错误消息!与动态变量?在动态var的验证错误上指定错误消息?

在这样的情况:

(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)

是否有办法指定 动态变量的验证错误时的错误消息?

回答

1

如果您使用RuntimeException而不是Exception,则错误消息将成为RuntimeExeption中的消息。

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