欢迎!请参阅关于页面以了解更多关于如何操作的信息。
为ExceptionInfo提供类型谓词,在编写spec时和其他在Clojure 1.9中新增的便捷功能(如nat-int?、pos-int?等)一样有用。
评论由:alexmiller制作
列出一些代码示例,说明在哪里可以使用这种类型谓词(我想在捕获处理中确实有例子),并给出一些关于这种情况如何常见的指示将是有帮助的。
评论由:xmlblog制作
有一个地方可以使用它,就是spec从通道拉取的数据。 http://swannodette.github.io/2013/08/31/asynchronous-error-handling。David的例子立即通过<>宏抛出异常,但异常信息可能被放入通道的事实意味着它可以通过我们在transducer中可能具有的函数来查看。这些函数可以在spec中使用,这里的谓词将非常有用。我要粘贴代码,但手头的例子是专有信息。这个描述足够好吗?还是需要更多的支持?
此外,虽然David的例子是CLJS,我已将此模式用于Clojure core.async代码中(例如异步Pedestal拦截器)。
此外,从美学(链接:1)的角度来看,为一个已经具有构造器(ex-info)和访问器(ex-data)的重要核心Clojure抽象添加一个类型谓词(ex-info?)似乎只是完善了/完成了API。不确定Rich或您会怎样看待这种论点,但我认为这不会对情况造成伤害。
(链接:1) 我在这里的美学观念受到了Mitch Wand与Dan Friedman的《程序设计语言基础》中的一些理念的影响。