欢迎!请查阅关于页面,了解更多关于该网站如何运作的信息。
异常信息类型谓词在编写规格说明时非常有用,就像Clojure 1.9中引入的其他一些非常好的功能一样(例如nat-int?,pos-int?等)。
评论者:alexmiller
列举一个代码示例会有帮助,证明在捕获异常时这种方式会产生好处(我想示例存在于捕获处理中),并给出其使用频率的指示。
评论者:xmlblog
一个可能很有用的场景是对于从channel获取的数据进行specing。 http://swannodette.github.io/2013/08/31/asynchronous-error-handling。David 的例子是通过 <? 转义标签立即抛出异常,但异常信息可能被放置在channel上的事实意味着它可以通过transducer中的函数被看到。这些函数可以利用spec,而这种谓词会有很大帮助。我想粘贴代码,但现在立即想到的例子是专有的。这个描述是否充分,或者这个案例需要更多的支持?
此外,虽然David的例子是CLJS,我在Clojure core.async代码中使用了这种模式(例如异步Pedestal拦截器)。
此外,从审美(链接:1)的角度来看,为已经具有构造函数(ex-info)和访问器(ex-data)的非常核心的Clojure抽象添加一个类型预测器(例如 ex-info?)似乎可以让API更加完善。不确定你或Rich可能如何认为这个论点很有说服力,但我认为这不会对论点造成伤害。
我对审美的理解受到了 Mitch Wand 和 Dan Friedman 的《编程语言基础》中一些想法的影响。