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个字符的板块中,这似乎在文件的其他部分中也是一个相当常见的宽度。

+1
参考:[https://clojure.atlassian.net/browse/CLJ-2225](https://clojure.atlassian.net/browse/CLJ-2225)(由gordonsyme报告)
0 票数

评论人:alexmiller

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

我认为这里唯一可能合理的变化是更具体地说明异常类型。

...