2012-02-29 52 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)))