有时我需要与 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
等的使用)。
如果有人感兴趣,我可以制作一个补丁。