欢迎!有关如何工作的更多信息,请查阅关于页面。
ExceptionInfo 的类型谓词在编写规范时,与 Clojure 1.9 中引入的其他优秀新增功能(例如 nat-int?,pos-int? 等)一样有用。
由 alexmiller 发表的评论
列出一些代码示例,其中这种技术派上用场,并给出一些关于其普遍性的指示将会有所帮助(我认为在捕获处理中确实有这样的例子)。
由 xmlblog 发表的评论
这种技术可以在对从频道中检索的数据进行规格检查时派上用场。有关详细信息,请参阅http://swannodette.github.io/2013/08/31/asynchronous-error-handling。David 的例子立即通过< ? >宏抛出异常,但将异常信息放在频道中的事实意味着我们可以通过可能在转换器中具有的函数看到它。这些函数可以利用规范(spec),在此谓词将非常有用。我将粘贴代码,但我手头立即可用的例子是专有的。这个描述是否充分,或者案例需要更多的支持?
此外,虽然在 David 的例子中是 CLJS,但我已经在 Clojure core.async 代码中使用了这种模式(例如异步Pedestal拦截器)。
此外,从美学的角度来看,为已经具有构造器(ex-info)和访问器(ex-data)的重要核心Clojure抽象语添加类型预测器(例如:ex-info)似乎可以完善/完成API。不清楚你或Rich会怎么想这个观点,但我认为这不妨碍论点的有效性。
我对美学的理解受到了Mitch Wand和Dan Friedman的《程序设计语言基础》中的一些观点的影响。