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

欢迎!请查看关于页面以了解更多有关如何使用本站的信息。

0
Clojure
我们通常使用‘ex-info’来抛出自定义异常,但至少需要两个参数:一个字符串消息和一个数据映射。
在大多数情况下,我们不需要抛入一个包含数据映射的异常。
因此,我认为我们可以为ex-info添加一个新的参数形式

  (ex-info "异常消息")

这将创建一个空数据的数据异常实例。

我不知道这对其他人是否有用,但对我们的开发人员来说非常有用。

补丁已附加。

7 答案

0

评论由: alexmiller

为什么要使用“(. clojure.lang.PersistentArrayMap EMPTY)”?为什么不能直接使用{}?

0

评论由: lgs32a

我一直认为缺乏单个参数形式是有意为之,为了使用户使用映射参数。你为什么想在没有任何数据的情况下抛出ExceptionInfo?

0

评论由: killme2008

@Alex 我忘了为什么我在这里使用了EMPTY map,可能受到了下面代码的影响 https://github.com/clojure/clojure/blob/7aad2f7dbb3a66019e5cef3726d52d721e9c60df/src/clj/clojure/core.clj#L4336

@Leon 比如,当参数出错时抛出异常

(when-not (integer? c)
(throw (ex-info "Expect number for c."))

这里不需要数据。

0
by

评论者:bronsa

那为什么不直接抛出 (Exception. "expect number for c") 呢?我觉得抛出ex-info(无数据)与直接抛出Exception没有增加多少价值

0
by

评论由: killme2008

确实,这只是一个技术决定,我们选择了使用ex-info抛出异常。

0
by

评论者:duke

这是从cljc文件中抛出简单异常的一种好方法,它可以在clj和cljs中同时工作。

0
by
参考:https://clojure.atlassian.net/browse/CLJ-1496 (由killme2008报告)
...