2024 Clojure 状态调查 中分享您的观点!

欢迎!请访问关于页面了解此功能的更多信息。

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

  (ex-info "异常消息")

这会创建一个带有空数据的 ExceptionInfo 实例。

我不确定这对其他人是否有用,但对我们的开发者很有帮助。

补丁已附上。

7 个答案

0

评论人:alexmiller

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

0

评论人:lgs32a

我总认为缺少一个一元劣度为故意设计,以使用户使用映射参数。你为什么想要抛出不包含数据的异常?

0

评论人:killme2008

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

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

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

这里不需要数据。

0

评论者:bronsa

那么为什么不直接抛出(Exception. "期望c为数字")呢?我认为在无数据的情况下抛出ex-info并没有抛出Exception增加任何价值。

0

评论人:killme2008

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

0

评论者:duke

这将是从一个cljc文件中抛出简单异常的好方法,这个方法在clj和cljs中都能工作。

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