2024年Clojure调查中分享您的想法!

欢迎!请参阅关于页面获取更多有关此操作的详细信息。

+11
文档

{{assert}}宏有两个参数,文档上记录为{{(assert x)}}和{{(assert x message)}}。

文档字符串为
{quote}
评估expr并抛出异常,如果它不评估为逻辑真。
{quote}

这相当误导,因为实际上{{assert}}会抛出{{Error}}。人们可能会认为如果失败将导致日志中的堆栈跟踪,就像任何其他{{Exception}}一样,但实际情况是JVM将终止。

行为是正确的,当断言条件为真时,{{assert}}应该导致程序退出,但我经常遇到错误的使用。

如果人们同意这是一个问题,我将准备一个补丁。

4回答

+3

评论者:marc

文档字符串(当前和所提议)中有一个遗漏,都没有提到{{assert}}的行为取决于{{clojure.core/**assert**}}动态变量的值。

+1

评论者:gordonsyme

clj-2225-20170913.patch更新了assert宏的文档字符串。我已将其文档字符串调整为每70个字符wrap一次,这似乎是文件中其余部分普遍使用的宽度。

+1
参考: https://clojure.atlassian.net/browse/CLJ-2225(由 gordonsyme 提出)
0

评论者:alexmiller

错误是 Throwable 的子类,就像 Exception 一样,没有特殊的行为(尽管它确实具有一个特殊的目的意义,即大多数程序不应该捕获它)。无论您的程序是否捕获它、退出还是记录,完全由您的程序决定,而不是错误的属性。

我认为这里可能唯一的修改是更具体地说明异常类型。

...