2024 年 Clojure 调查问卷! 中分享您的想法。

欢迎!请访问 关于 页面了解更多关于这个平台的信息。

0
Clojure
我们经常使用 'ex-info' 来抛出自定义异常。但 'ex-info' 至少接受两个参数:一个字符串消息和一个数据映射。
在大多数情况下,但我们需要抛出不带数据映射的异常。
所以我想我们可以在 'ex-info' 添加一个新的函数参数

  (ex-info "异常消息")

这将创建一个包含空数据的 ExceptionInfo 实例。

我不确定这对其他人是否有用,但它对我们开发者来说非常有用。

补丁已附加。

7 答案

0

评论人:alexmiller

为什么 "(. clojure.lang.PersistentArrayMap EMPTY)"?为什么不只是 {}?

0

评论人:lgs32a

我一直认为缺失单参数是为了让用户使用映射参数的设计,为什么要抛出不带数据的数据异常呢?

0

评论人:killme2008

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

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

当不是整数时(
(抛出 (ex-info "期望c为数字。"))

此处不需要数据。

0

评论者:bronsa

那么为什么不直接抛出一个 (Exception. "期望c为数字") 呢?我不认为抛出没有数据的ex-info比直接抛出异常有更大的价值

0

评论人:killme2008

的确,这仅仅是一个技术决策,我们选择使用ex-info来抛出异常。

0

评论者:duke

这是一个从cljc文件中抛出简单异常的好方法,这在clj和cljs中都可以使用。

0
...