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

欢迎!请查阅关于页面获取更多关于如何工作的信息。

+2
元数据

有时我需要与 ExceptionInfo 的基本异常信息交互(例如 .setStackTrace)。核心函数 ex-info 也没有类型提示任何参数,因此为了避免反射警告,我在使用调用结果时必须指定 ^ExceptionInfo

(let [old-ex (Exception. "asdf")
      new-ex (ex-info "example" {})]
  (doto  ^ExceptionInfo new-ex (.setStackTrace (.getStackTrace old-ex))))

ex-info 添加类型提示将完美解决这些问题(包括 Clojure 核心中的使用、ex-data 等)。

如果有人感兴趣,我可以创建一个补丁。

2 个答案

+1

选中
 
最佳答案

已创建 Jira 工单https://clojure.atlassian.net/browse/CLJ-2815以跟踪此问题。

by
谢谢!同时感谢提供的补丁!
0
by

看起来ex-info大多数情况下都构建了一个被抛出并在catch块中捕获的东西,在这种情况下类型提示似乎是没用的?

by
这是真的,这就是我为什么不提那个案例的原因。我在想的是说出(Exception. "某些消息")可以传播其类型,以便进行交互,而(ex-info "某些消息" {})却不能。

我们在我公司代码库的几个地方遇到过这种情况,这并不是一个破坏性的问题,但它足够令人烦恼,似乎值得在不产生任何负面影响的情况下对其进行核心更改。
...